- Pourquoi j'obtiens ce message d'erreur? "WaitAll pour plusieurs handles sur un thread STA n'est pas pris en charge."
- Devrais-je utiliser l'attribut [MTAThreadAttribute]? Mise à jour: Ne fonctionne pas avec les applications WPF!
Remarque: Cette erreur se situe à la ligne WaitHandle.WaitAll (doneEvents); J'utilise un projet WPF standard.WaitAll pour plusieurs handles sur un thread STA n'est pas pris en charge
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!");
}
Mise à jour: La solution suivante ne fonctionne pas pour les applications WPF! Il n'est pas possible de modifier l'attribut de l'application principale en MTAThreadAttribute. Il se traduira par l'erreur suivante:
Erreur: "WaitAll pour plusieurs handles sur un thread STA n'est pas pris en charge."
Vous vous rendez compte que vous geler complètement l'application jusqu'à ce que ces indexeurs sont faites? – liggett78
Oui! Je le sais. Mais comme c'est il ne fonctionne pas. –
http://stackoverflow.com/questions/3784510/notsupportedexception-on-waithandle-waitall –