http://msdn.microsoft.com/en-us/library/dd997415.aspxTPL obsługi
Per artykule mowa powyżej I Wyjątek staram się obsługiwać wyjątki w zadaniu continuatin. Przykład jestem powołując się w powyższym artykule jest taka:
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);
Mój kod to:
Task<string> task = Task<string>.Factory.StartNew(() => process.StartTask(this));
task.ContinueWith(CloseDialog, TaskContinuationOptions.OnlyOnFaulted);
W StartTask, rzucam błąd tak jak np. Oczekuję, że CloseDialog zostanie wykonany i mogę sprawdzić task.Exception w tej metodzie, jak pokazano w przykładzie. Jednak kiedy wyrzucam wyjątek I kod po prostu zatrzymuje się z nieobsługiwanym wyjątkiem. Czy powinienem używać bloku prób/catch? Jeśli tak, to gdzie? Przy okazji, chcę, aby moje zadanie kontynuacyjne (CloseDialog) działało ZAWSZE. Używam tylko .OnlyOnFaulted, ponieważ jest to pokazane w przykładzie.