Gestion des exceptions BackgroundWorker

Je suis en train de travailler avec les composants suivants:

  • une Bibliothèque (qui déclenche une exception)
  • un test de la console pour tester mon journalisation
  • de la bibliothèque d'entreprise gestion des exceptions blocs d'application
  • de la bibliothèque d'entreprise application d'enregistrement de blocs

Je suis en invoquant la méthode de bibliothèque à l'aide d'un backgroundworker. La bibliothèque lance l'exception mais la RunWorkerCompleted gestionnaire n'est jamais appelée.

La seule façon d'attraper l'exception est d'entourer mon DoWork gestionnaire de code avec un bloc try/catch.

N'est méconnaître la RunWorkerCompletedEventArgs.Erreur De Propriété? N'est-il pas pour obtenir des exceptions, qui a été pris par le BackgroundWorker?

Codesample:

static BackgroundWorker w = new BackgroundWorker();

w.DoWork += new DoWorkEventHandler(w_DoWork);
w.RunWorkerCompleted += 
   new RunWorkerCompletedEventHandler(w_RunWorkerCompleted);
w.RunWorkerAsync();



static void w_DoWork(object sender, DoWorkEventArgs e)
{
   MyClass m  = new MyClass();
   w.result = m.Compute();
}

static void w_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
   if (e.Error != null)
   {
      HandleException(e.Error);
   }

   /* result related code */

}


static void HandleException(Exception e)
{
   ExceptionPolicy.HandleException(e, "MyPolicy");
}

L'exemple ci-dessus entraînera la résiliation de mon application console. Le vs2010 sortie écrit absolument rien (seulement sortie par défaut).

Alors où est le problème?

//Edit: cet extrait fonctionne pour la capture de la bibliothèque de l'exception.

static void w_DoWork(object sender, DoWorkEventArgs e)
{
   try
   {
      MyClass m  = new MyClass();
      w.result = m.Compute();
   }catch(Exception e){ }

}

source d'informationauteur csteinmueller