我有下面的代码有问题:为什么任务完成后,即使在等待
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!!");
}
我只是想摆脱新开工任务MainTask
例外。但结果并不符合我的预期。
MainStarted!
Main State = RanToCompletion IsFaulted = False isComplete = True
SleepStarted!
SleepEnded!
Waiting Ended!!
正如你所看到的结果,任务在“等待结束!!”之前完成。控制台日志。 我没有线索,为什么MainTask
结束,即使在MainTask
有await
命令里面? 我错过了什么吗?
任何你不能做MainTask()的原因。ContinueWith(...)'直接? –