2010-07-08 5 views
1

Je dois appeler quelques services Web pendant la construction d'une page MVC, donc je suis en train de mener le travail via le pool de threads, et en utilisant ManualResetEvents pour déterminer quand j'ai mes résultats.Passer des exceptions à travers des threads dans une application MVC

Si l'un des threads génère une exception, il provoquera le blocage de l'application. La gestion des exceptions est configurée via un filtre, mais je dois d'abord renvoyer l'exception au thread de rendu principal.

Je ne peux pas utiliser BackgroundWorker, car j'ai besoin de "joindre" le travail et de rendre la page.

Suggestions? N'importe qui?

Répondre

2

Vous pouvez conserver une file d'attente avec les exceptions et lorsque le ManualResetEvent est enfin défini, vérifiez la file d'attente avant de continuer.

private readonly Queue<Exception> _exceptions = new Queue<Exception>(); 


private void DoWork(object o) 
{ 
    try 
    { 
     // ... 
    } 
    catch (Exception ex) 
    { 
     _exceptions.Enqueue(ex); 
    } 
    finally 
    { 
     done.Set(); 
    } 
} 
+0

Bon appel Chaos. J'espérais quelque chose de plus générique (j'avais créé un DSL basé sur LINQ pour cela), mais je suppose que je peux travailler dans une file d'attente d'exceptions sans trop de problèmes. Merci. –

Questions connexes