如何检查主线程是否忙碌?

时间:2017-10-10 10:01:57

标签: c# com

我有一个CAD插件应用程序。在我的CAD应用程序中,CAD可能会限制哪些线程可用于修改CAD主体。 这是我的要求:

  • 由于在不同的线程上收到COM调用,因此插件必须确保所有构造调用都在正确的线程(主线程)中进行。
  • 此外,由于内核可以在CAD繁忙时调用插件,因此插件必须确保它可以安全地调用构造线程而不会造成死锁。

有效的解决方案是在尝试使用它之前检查Main(构造)线程是否正忙。

所以我的问题是:如何检查主线程是否忙?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并通过以下方式解决了该问题:

ManualResetEvent waiter = new ManualResetEvent(false);
control.BeginInvoke((Action)(() => waiter.Set()));
bool threadIdle = waiter.WaitOne(timeout);

将超时设置为所需的等待时间(例如500ms)