Я использую объект STA COM из задней земли, один из объектов COM-объекта будет блокировать, когда я вызову его из нового потока, который находится в режиме потоковой передачи STA, поскольку режим COM-объекта STA и пользовательский интерфейс поток тоже блокируется, могу ли я избежать блокировки этого пользовательского интерфейса?Резьба потока потоков STA также блокирует нить пользовательского интерфейса winform?
ответ
Это точка STA, COM автоматически будет маршировать вызов из вашей рабочей нити в поток STA. Чтобы методы COM-сервера всегда вызывались поточно-безопасным способом. И если блокирует метод, это также заблокирует ваш поток STA. Обычно поток пользовательского интерфейса.
Это означает, что использование этого COM-объекта в потоке фактически не выполняет ничего. Для другого, что реальная проблема находится на COM-сервере, она не должна блокироваться. Удостоверьтесь, что это не тупиковая ситуация.
Возможным обходным решением является создание COM-сервера на другом потоке STA, поэтому, по крайней мере, ваш поток пользовательского интерфейса не блокируется. Проверьте код this answer. Оба вызова Thread.SetApartmentState и Application.Run имеют решающее значение для создания гостеприимного дома для сервера.
- 1. Thread.Join в потоке пользовательского интерфейса также блокирует дочернюю нить
- 2. Android: прослушивающая нить Bluetooth блокирует поток пользовательского интерфейса
- 3. Несмотря на ожидание, нить пользовательского интерфейса все еще блокирует
- 4. Android Cordova Plugin блокирует нить пользовательского интерфейса, хотя используется пул потоков
- 5. Как определить поток потока пользовательского интерфейса
- 6. Резьба, выполняемая между fork и exec блокирует другую нить, прочитанную
- 7. Событие OnMessage для потока STA
- 8. Thread.sleep() блокирует основной поток пользовательского интерфейса
- 9. EKEventStore блокирует поток пользовательского интерфейса
- 10. Запуск нескольких потоков пользовательского интерфейса
- 11. Найти, какой модуль блокирует поток пользовательского интерфейса
- 12. shutdown многопоточное winform C# приложение без блокировки потока пользовательского интерфейса
- 13. Когда элемент пользовательского интерфейса, назначенный для потока
- 14. STA call from MTA
- 15. Исключительное исключение потока STA в приложении WPF
- 16. Фоновая нить, как представляется, блокирует UI
- 17. Несколько потоков пользовательского интерфейса в Cocoa
- 18. Обновление пользовательского интерфейса из фоновых потоков
- 19. Запуск потока пользовательского интерфейса неопределенно
- 20. WebClient.DownloadProgressChanged: Console.WriteLine() блокирует поток пользовательского интерфейса
- 21. Определить, что блокирует поток пользовательского интерфейса
- 22. Как ссылаться на поток пользовательского интерфейса компонента WinForm?
- 23. TableView scrollToRow блокирует основную нить ui
- 24. RxAndroid: изменения пользовательского интерфейса на Schedulers.io() нить
- 25. не может испускать из определенного потока в основной поток пользовательского интерфейса
- 26. NSThread sleepfortimeinterval блокирует основную нить
- 27. WPF ждут ключи от потока пользовательского интерфейса
- 28. .NET - ManualResetEvent.Reset нить блокирует
- 29. NSoperationQueue блокирует основную нить
- 30. webViewDidFinishLoad блокирует основную нить