我在 C#、VS2012、WPF 4.5 中有以下代码。我的期望是,.ContinueWith
将在任务完全完成后执行(这是延续的全部目的,不是吗?)。
这应该导致 2 in 的值finalResult
。
int myTestInt = 0;
Task task = Task.Factory.StartNew(async () =>
{
myTestInt = 1;
await Task.Delay(TimeSpan.FromSeconds(6));
myTestInt = 2;
}).ContinueWith(_ =>
{
int finalResult = myTestInt;
});
实际上,finalResult
被赋值为 1 而不是。因此,似乎该await
语句的延续已经开始。
这是预期的行为吗?我在这里错过了什么吗?ContinueWith
一个任务完全完成后我不能依靠启动吗?
更新:
贾斯汀的回答只是启发我检查以下内容:
int myTestInt = 0;
Task task=Task.Factory.StartNew(async () =>
{
myTestInt = 1;
await Task.Delay(TimeSpan.FromSeconds(6));
myTestInt = 2;
});
task.Wait();
int result2 = myTestInt;
finalResult 仍然设置为 1。有没有办法可靠地等待包含await
s 的任务完成?