我正在构建一个 VSTO 加载项:我需要运行一个后台线程,但该线程需要访问 COM 组件(我已实现 IMessageFilter 以使此消息传递尽可能安全)。我相信所有访问 OLE 或 COM 的线程都必须是 STA;因此,BackgroundWorker 不在讨论范围内。
我很高兴使用普通线程并将 ApartmentState 设置为 STA,但我还需要知道该线程何时完成,以便更新一些 UI 内容。我不想 Join() 因为它会锁定 UI(这是我使用线程的全部原因!)。
在我的线程方法结束时触发某种事件并让该事件完成我需要的完成的事情的最佳实践是什么?
或者
投票比较好
while(!_threadFinishedStarting)
{
Application.DoEvents();
Thread.Sleep(100);
}
如此处所述:C#.net - 如何提醒程序线程已完成(事件驱动)?
非常感谢