http://msdn.microsoft.com/en-us/library/dd997415.aspxTPL Gestion des exceptions
par l'article mentionné ci-dessus, je suis en train de gérer les exceptions dans une tâche de continuatin. L'exemple je cite dans l'article ci-dessus est la suivante:
var task1 = Task.Factory.StartNew(() =>
{
throw new MyCustomException("Task1 faulted.");
})
.ContinueWith((t) =>
{
Console.WriteLine("I have observed a {0}",
t.Exception.InnerException.GetType().Name);
},
TaskContinuationOptions.OnlyOnFaulted);
Mon code est:
Task<string> task = Task<string>.Factory.StartNew(() => process.StartTask(this));
task.ContinueWith(CloseDialog, TaskContinuationOptions.OnlyOnFaulted);
En startTask, je jette une erreur comme l'exemple. Mon attente est que CloseDialog s'exécutera et je peux examiner taskException au sein de cette méthode comme indiqué par l'exemple. Cependant, lorsque je lance l'exception, le code s'arrête simplement avec une exception non gérée. Devrais-je utiliser un bloc try/catch? Si oui, où? Par ailleurs, je veux que ma tâche de continuation (CloseDialog) soit toujours exécutée. J'utilise juste .OnlyOnFaulted parce que c'est ce qui est montré dans l'exemple.