【发布时间】:2013-07-28 14:05:36
【问题描述】:
我正在构建一个 VSTO 加载项:我需要运行一个后台线程,但该线程需要访问 COM 组件(我已实现 IMessageFilter 以使此消息传递尽可能安全)。我相信所有访问 OLE 或 COM 的线程都必须是 STA;因此,BackgroundWorker 不在讨论范围内。
我很高兴使用普通线程并将 ApartmentState 设置为 STA,但我还需要知道该线程何时完成,以便更新一些 UI 内容。我不想 Join() 因为它会锁定 UI(这是我使用线程的全部原因!)。
最佳实践是在我的线程方法结束时触发某种事件,并让该事件完成我需要的已完成的事情吗?
或
投票比较好
while(!_threadFinishedStarting)
{
Application.DoEvents();
Thread.Sleep(100);
}
这里提到:C#.net - How to alert program that the thread is finished (event driven)?
非常感谢
【问题讨论】:
标签: c# multithreading com vsto sta