在控制台应用程序的
Main
方法中:Do().ContinueWith(t => Do())
.ContinueWith(t => Do())
.ContinueWith(t => Do());
Do
是一个返回 Task
的方法:
var source = new CancellationTokenSource();
var token = source.Token;
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Inside " + _Counter);
token.WaitHandle.WaitOne(1000);
Console.WriteLine(_Counter++ + " is done");
}, token);
_Counter
是一个整数字段:
private static int _Counter = 1;
当我运行时,结果如下:
内部1
1完成了
内部2
内部2
内部2
2完成了
3完成了
4完成了
因此,假设我有一个名为t的Task
和一个名为a的Action<Task>
。
如果我调用t.ContinueWith(a)
,那么在t完成之后将会调用a,对吗?并且当a运行时,这应该意味着t调用的任何委托都已经结束。
是什么导致了这个结果?难道我没有明显的东西吗?
我使用的工具:
- Windows 8 RTM
- .NET Framework 4.5