- Perché viene visualizzato questo messaggio di errore? "WaitAll per più handle su un thread STA non è supportato."
- Devo usare [MTAThreadAttribute] attribuire? Aggiornamento: Non funziona con le applicazioni WPF!
Nota: Errore nella riga WaitHandle.WaitAll (doneEvents); Sto utilizzando un progetto standard WPF.WaitAll per più handle su un thread STA non supportato
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: La seguente soluzione non funziona per applicazioni WPF! Non è possibile modificare l'attributo dell'applicazione principale su MTAThreadAttribute. Risulterà il seguente errore:
Errore: "WaitAll per più handle su un thread STA non è supportato."
Ti rendi conto che si app congelare completamente fino a quando tali indicizzatori sono fatto? – liggett78
Sì! Lo so. Ma così com'è non funziona. –
http://stackoverflow.com/questions/3784510/notsupportedexception-on-waithandle-waitall –