Как корректно завершить COM соединение? #248517


#0 by Alexuy2
После установки соединения из программы на VS Basic for .NET там объекту присваиваю Nothing, но пользователь так и остается на сервере работающим, а процесс nhsrvice.exe(HASP LM) постоянно жрет память и время проца(50%), приходится перезагружать :(
#1 by Neco
Покажи код
#2 by Alexuy2
Dim СерверМТ As TcpListener = New TcpListener(IPAddress.Parse(стрАдресСервера), 8000)        СерверМТ.Start            Dim КПК As TcpClient = СерверМТ.AcceptTcpClient            Dim Поток As NetworkStream = КПК.GetStream            Dim ОбъектЧтение As New BinaryReader(Поток)            Dim ОбъектЗапись As New BinaryWriter(Поток)            Dim ВосьмеркаСОМ As V8.COMConnector = New V8.COMConnector            Dim Восьмерка As Object = ВосьмеркаСОМ.Connect(стрСоединениеV8)                Dim Сообщение As String = ОбъектЧтение.ReadString                If Сообщение = СообщенияКлиента.ПередаюИмяАгента Then                If Сообщение = СообщенияКлиента.ПолучитьТаблицуМаршруты Then                    ОбъектЗапись.Write(СообщенияСервера.ВернутьТаблицуМаршруты)                    Dim ТекстЗапроса As String = СформироватьТекстЗапроса(ВидыЗапроса.ПоМаршрутам)                    Dim тзМаршруты As Object = Восьмерка.всРезультат                    Dim ИндексСтроки As Integer                    Dim КоличествоСтрокВТаблице As Integer = тзМаршруты.Количество                    Dim СтрокаТаблицы As Object                    For ИндексСтроки = 0 To КоличествоСтрокВТаблице - 1                If Сообщение = СообщенияКлиента.ПолучитьТаблицуКонтрагенты Then                    ОбъектЗапись.Write(СообщенияСервера.ВернутьТаблицуКонтрагенты)                    Dim ТекстЗапроса As String = СформироватьТекстЗапроса(ВидыЗапроса.ПоКонтрагентам)                    Dim тзКонтрагенты As Object = Восьмерка.всРезультат                    Dim ИндексСтроки As Integer                    Dim КоличествоСтрокВТаблице As Integer = тзКонтрагенты.Количество                    Dim СтрокаТаблицы As Object                    For ИндексСтроки = 0 To КоличествоСтрокВТаблице - 1                If Сообщение = СообщенияКлиента.ПолучитьТаблицуДоговоры Then                    ОбъектЗапись.Write(СообщенияСервера.ВернутьТаблицуДоговоры)                    Dim ТекстЗапроса As String = СформироватьТекстЗапроса(ВидыЗапроса.ПоДоговорам)                    Dim тзДоговоры As Object = Восьмерка.всРезультат                    Dim ИндексСтроки As Integer                    Dim КоличествоСтрокВТаблице As Integer = тзДоговоры.Количество                    Dim СтрокаТаблицы As Object                    For ИндексСтроки = 0 To КоличествоСтрокВТаблице - 1                If Сообщение = СообщенияКлиента.ПолучитьТаблицуНоменклатура Then                    ОбъектЗапись.Write(СообщенияСервера.ВернутьТаблицуНоменклатура)                    Dim ТекстЗапроса As String = СформироватьТекстЗапроса(ВидыЗапроса.ПоНоменклатуре)                    Dim тзНоменклатура As Object = Восьмерка.всРезультат                    Dim ИндексСтроки As Integer                    Dim КоличествоСтрокВТаблице As Integer = тзНоменклатура.Количество                    Dim СтрокаТаблицы As Object                    For ИндексСтроки = 0 To КоличествоСтрокВТаблице - 1                If Сообщение = СообщенияКлиента.ПолучитьТаблицуПродажи Then                    ОбъектЗапись.Write(СообщенияСервера.ВернутьТаблицуПродажи)                    Dim ТекстЗапроса As String = СформироватьТекстЗапроса(ВидыЗапроса.ПоПродажам)                    Dim тзПродажи As Object = Восьмерка.всРезультат                    Dim ИндексСтроки As Integer                    Dim КоличествоСтрокВТаблице As Integer = тзПродажи.Количество                    Dim СтрокаТаблицы As Object                    For ИндексСтроки = 0 To КоличествоСтрокВТаблице - 1                If Сообщение = СообщенияКлиента.КонецСеанса Then
#3 by Alexuy2
В режиме COM соединения не работает ЗавершитьРаботуСистемы, может есть аналог?
#4 by Neco
Посмотри в файлике /1cv8/V8AddDoc810.htm описание программного интерфейса администрирования сервера 1С:Предприятия, который доступен через COM объект V8.COMConnector. Пример удаления всех соединений (фрагмент на VBScript):
#5 by Immortal
#6 by Alexuy2
Спасибо за ответы буду пытаться :)
#7 by Kalambur
а можно вопрос? а что это? Dim ВосьмеркаСОМ As V8.COMConnector
#8 by Kalambur
ой, я знаю что это :)
#9 by Neco
Мдя ... это самое
#10 by Immortal
мда.. вот что значит телепатия..уже с полуслова всё понимают..
#11 by Kalambur
мистОзависимость, сначала спросил-потом подумал :)
#12 by Immortal
чудно:) говорят что скорость мысли чуть меньше скорости света))
#13 by Kalambur
их просто нет у меня :)
#14 by Либерал
думаю, все проще:            .....
#15 by toha2E
а мы в COM-соединении применяем ПрекратитьРаботуСистемы  - эта команда завершает соединение сразу и бесповоротно, а вот ЗавершитьРаботуСистемы не всегда сразу завершает, а может, например, до конца модуля дождаться и потом вообще не отключиться. Попробуй.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям