7 Stimmen

TPL-Ausnahmebehandlung

http://msdn.microsoft.com/en-us/library/dd997415.aspx

Gemäß dem oben erwähnten Artikel versuche ich, Ausnahmen in einer fortlaufenden Aufgabe zu behandeln. Das Beispiel, das ich in dem oben genannten Artikel zitiere, ist dieses:

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);

Mein Code lautet:

Task<string> task = Task<string>.Factory.StartNew(() => process.StartTask(this));
task.ContinueWith(CloseDialog, TaskContinuationOptions.OnlyOnFaulted);

In StartTask erhalte ich eine Fehlermeldung, genau wie im Beispiel. Ich erwarte, dass CloseDialog ausgeführt wird und ich task.Exception in dieser Methode untersuchen kann, wie im Beispiel gezeigt. Wenn ich jedoch die Ausnahme auslöse, bleibt der Code einfach mit einer unbehandelten Ausnahme stehen. Sollte ich einen try/catch-Block verwenden? Wenn ja, wo? Übrigens, ich möchte, dass meine Fortsetzungsaufgabe (CloseDialog) IMMER ausgeführt wird. Ich bin nur mit .OnlyOnFaulted, weil das ist, was in dem Beispiel gezeigt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X