meine Sys/Db admin & Developper Notitzen - wer Rechtschreibfehler findet darf sie behalten ... my Sys/Db Admin and developper notes - I don't care about typos
Monday, May 29, 2017
Tasks zusammanhängen mit ContinueWith und Fehlerbehandlung
private void CreateAnys(Dictionary<string,Action> createAnyDict)
{
var sbNames= new StringBuilder();
foreach (var AnyName in createAnyDict.Keys)
{
sbNames.Append(AnyName);
}
if (MessageBox.Show($"create {sbNames} Any ?", "Create Any", MessageBoxButton.YesNo) ==
MessageBoxResult.No) return;
SetBusy();
var firstTask = new Task(() => SetStatusLabel("Creating Any(s)"));
var nextTask = firstTask;
foreach (var dictEntry in createAnyDict)
{
nextTask = nextTask.ContinueWith(antecedent =>
{
Trace.WriteLine("Result last Task:");
if (antecedent.IsFaulted)
{
Trace.WriteLine("Error: "+antecedent.Exception?.Message);
}
else if (antecedent.IsCanceled)
{
Trace.WriteLine("Cancled !");
}
else
{
Trace.WriteLine("Succeeded !");
}
SetStatusLabel($"creating Any {dictEntry.Key}");
try
{
dictEntry.Value.Invoke();
}
catch (Exception ex)
{
Trace.WriteLine($"Error creating {dictEntry.Key}:{ex.Message}");
}
});
}
nextTask = nextTask.ContinueWith((t) =>
{
SetStatusLabel("finished creating Any(s) - ready ...");
SetReady();
});
try
{
firstTask.Start();
//task0.Wait();
}
catch (AggregateException ex)
{
MessageBox.Show(ex.Message);
}
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment