- 为什么我会收到此错误消息? “不支持 STA 线程上多个句柄的 WaitAll。”
- 我应该使用 [STAThreadAttribute] 属性吗?Update:不适用于 WPF 应用程序!
笔记:
错误位于 WaitHandle.WaitAll(doneEvents); 行
我正在使用标准WPF项目.
private void Search()
{
const int CPUs = 2;
var doneEvents = new ManualResetEvent[CPUs];
// Configure and launch threads using ThreadPool:
for (int i = 0; i < CPUs; i++)
{
doneEvents[i] = new ManualResetEvent(false);
var f = new Indexer(Paths[i], doneEvents[i]);
ThreadPool.QueueUserWorkItem(f.WaitCallBack, i);
}
// Wait for all threads in pool
WaitHandle.WaitAll(doneEvents);
Debug.WriteLine("Search completed!");
}
Update:以下解决方案不适用于 WPF 应用程序!
无法将主应用程序属性更改为 MTAThreadAttribute。它将导致以下错误:
Error:“不支持 STA 线程上多个句柄的 WaitAll。”
实际上我使用以下内容来替换 WaitHandle.WaitAll(doneEvents);
foreach (var e in doneEvents)
e.WaitOne();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)