- Почему я получаю это сообщение об ошибке? «WaitAll для нескольких дескрипторов в потоке STA не поддерживается.»
- Должен ли я использовать атрибут [MTAThreadAttribute]? Обновление: Не работает с приложениями 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!");
}
Обновление: Следующее решение не работает для приложений WPF!
Невозможно изменить основной атрибут приложения на MTAThreadAttribute. Это приведет к следующей ошибке:
Ошибка:"WaitAll для нескольких дескрипторов в потоке STA не поддерживается."