я уже несколько дней не могу найти решение этой проблемы ...
Я разрабатываю maccro solidworks VB.net, он использует COM-объект из библиотеки DLL, которую я разработал в C++. Функции этого COM-объекта достаточно длинные для выполнения (иногда более 30 секунд), а также используют параллельные циклы (с OpenMP).
Моя проблема заключается в том, что я запускаю одну из этих функций через 10 секунд после запуска программы. не ответит! И это замораживает мой пользовательский интерфейс. Функция dll запущена, и мы не можем отправить обновление в пользовательский интерфейс с DoEvents ...
Я пытался поместить функцию в фоновый рабочий, но с COM-объектом она не работает. Другая вещь, которую я пытался сделать, - заставить фонового работника, который регулярно обращается к моему процессу, видеть, отвечает ли он окнами, но когда он перестает отвечать, я не могу заставить отвечать. Единственное решение, которое я нахожу, - это изменить значение ключа реестра «HungAppTimeout», но это относится ко всему программному обеспечению на компьютере, тогда как я хочу просто применить его к своему коду.
У вас естьрешение, чтобы избежать «нет ответа»?
Пример кода:
Public Sub StartfunctionCOM()
Dim Myclass as COMClass = new COMClass
Myclass.functiontakemanytime() 'time >10sec
end sub