我在任务和 Task.Factory 中遇到了这种特殊情况。所以这是我的一段代码。
public Task CreateAndStartSyncTask()
{
return Task.Factory.StartNew(async () =>
{
... do stuff ...
await Task.Delay(500);
... do more stuff ...
}
}
public void Synchronize()
{
var syncTask = CreateAndStartSyncTask();
syncTask.Wait(mTimeout);
switch(syncTask.Status) {
case TaskStatus.RanToCompletion:
// VICTORY!
break;
default:
throw syncTask.Exception;
}
}
所以这里我的问题是,当我运行这段精彩的代码时,我会在“......做更多的事情......”之前进入开关盒。然后任务继续运行直到完成。这不是所需的功能,因为我真的希望完成任务。
话虽这么说,考虑到它以同步方式处理,但我不能完全公开代码,我真的需要了解整个任务完成的心态,在这个特定的上下文中将它放在它自己的任务中有点多余。
发生了什么事,我如何才能真正检查任务是否真的结束了?