【发布时间】:2013-01-14 19:57:48
【问题描述】:
在 .NET 应用程序中,我使用第三方 ActiveX 控件连接到设备。该组件没有 UI,因此我可以从 Windows 应用程序、控制台应用程序或 Windows 服务中使用。问题在于它的行为因应用程序类型而异。
从控制台应用程序(或 Windows 服务)使用它:
- 我使用 ThreadPool 调用组件方法,也就是说,在主线程之外的线程中。
- 该方法在同一个线程中执行。 (如预期)
- 方法回调在同一个线程中运行。 (如预期)
但是,当从 Windows 应用程序中使用它时:
- 我调用一个使用线程池的组件方法,也就是说,在一个线程而不是 UI 线程中。 --> 此时ActiveX控件似乎变成了UI线程。
- 该方法在 UI 线程中执行(我看到 UI 阻塞了!)
- 方法回调正在 UI 线程中运行。
有没有办法隔离组件,以便调用在 UI 以外的线程中执行?
谢谢!
【问题讨论】:
-
它可能将 ActiveX 控件视为 UI 控件。只有一个评论。该控件是否有任何 UI 组件?
-
它没有(几乎可以肯定)。我正在阅读我应该在 STA 模式下创建一个线程,但不确定如何在其中实例化组件。
标签: .net activex threadpool