«Вызванный объект отключился от своих клиентов» win32com.client.Dispatch ('CANalyzer.Application') - PullRequest
0 голосов
/ 21 июня 2019

У меня есть код Python, который запускает CANalyzer и останавливает его через n секунд (определяется пользователем с графическим интерфейсом tkinter) внутри потока таймера.Вот код:

pythoncom.CoInitialize()
CANalyzer = win32com.client.Dispatch('CANalyzer.Application')
self.CAN_id = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, CANalyzer)

затем в потоке:

    def timer_Stop_reply(CAN_id):

        pythoncom.CoInitialize()
        CAN = win32com.client.Dispatch(
            pythoncom.CoGetInterfaceAndReleaseStream(CAN_id, pythoncom.IID_IDispatch)
        )
        CAN.Measurement.Stop()
        self.stopped_DSE=1
        pythoncom.CoUninitialize()
        print('\n=== Stopping Trace ===')

К сожалению, через 400 с возникает некое время ожидания, фактически я получаю эту ошибку (-2147417848, 'The object invoked has disconnected from its clients.', None, None),Как я могу избежать этой проблемы?Есть ли что-то вроде поддержания жизни?Мне нужно запустить CANalyzer более 10 минут в моем тесте, поэтому эта ошибка действительно раздражает.

Спасибо

1 Ответ

0 голосов
/ 21 июня 2019

Хорошо, в данный момент обходной путь заключается в повторной отправке CANalyzer в потоке, когда время теста составляет> 400 с. В любом случае, если кто-то найдет лучшее решение, я буду рад его прочитать!

...