ich ein Problem im folgenden Code habe:Warum Aufgabe endet sogar in warten
static void Main (string[] args)
{
Task newTask = Task.Factory.StartNew(MainTask);
newTask.ContinueWith ((Task someTask) =>
{
Console.WriteLine ("Main State=" + someTask.Status.ToString() + " IsFaulted=" + someTask.IsFaulted+" isComplete="+someTask.IsCompleted);
});
while (true)
{
}
}
static async Task MainTask()
{
Console.WriteLine ("MainStarted!");
Task someTask = Task.Factory.StartNew (() =>
{
Console.WriteLine ("SleepStarted!");
Thread.Sleep(1000);
Console.WriteLine ("SleepEnded!");
});
await someTask;
Console.WriteLine ("Waiting Ended!!");
throw new Exception ("CustomException!");
Console.WriteLine ("NeverReaches here!!");
}
Ich mag nur MainTask
Ausnahme von neuem gestarteter Aufgabe zu bekommen. Aber das Ergebnis war nicht das, was ich erwartet hatte.
MainStarted!
Main State = RanToCompletion IsFaulted = False isComplete = True
SleepStarted!
SleepEnded!
Waiting Ended!!
Wie Sie das Ergebnis sehen können, beendet Aufgabe vor „Ended Warten !!“ Konsolenprotokoll Ich habe keine Ahnung, warum MainTask
endete auch wenn in MainTask
hat await
Befehl innen? Habe ich etwas verpasst?
Jeder Grund, warum Sie 'MainTask() nicht tun können.Fortfahren mit (...) 'direkt? –