Ich schaue mir das Beispiel für die TPL-Ausnahmebehandlung aus MSDN an @
http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx
Die Grundform des Codes ist:
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
try
{
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}
Meine Frage ist: Ist dies eine Race Condition? Was passiert, wenn task1 auslöst, bevor der Versuch ausgeführt wurde? Übersehe ich etwas, das verhindert, dass dies ein Wettlauf ist?
Müsste es nicht stattdessen so geschrieben werden?
try
{
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}