- ¿Por qué aparece este mensaje de error? "WaitAll para múltiples identificadores en un subproceso STA no es compatible".
- ¿Debo usar [MTAThreadAttribute] attribut? Actualización: ¡No funciona con aplicaciones WPF!
Nota: Error en la línea WaitHandle.WaitAll (doneEvents); Estoy usando un proyecto WPF estándar.WaitAll para múltiples identificadores en un hilo STA no es compatible
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!");
}
Actualización: La siguiente solución no funciona para aplicaciones WPF! No es posible cambiar el atributo de la aplicación principal a MTAThreadAttribute. Se producirá el siguiente error:
Error: "WaitAll para múltiples identificadores en un subproceso STA no es compatible."
Se da cuenta de que la aplicación va a congelar por completo hasta que los indexadores se hacen? – liggett78
¡Sí! Yo sé eso. Pero tal como es, no se ejecuta. –
http://stackoverflow.com/questions/3784510/notsupportedexception-on-waithandle-waitall –