在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 完成
所以让我们假设我有一个Task
被称为t和一个Action<Task>
被称为a。
如果我打电话t.ContinueWith(a)
,应该在t完成后调用a ,对吗?当a运行时,这应该意味着任何委托t调用都已结束。
是什么导致了这个结果?我在这里没有得到明显的东西吗?
我用什么:
- 视窗 8 RTM
- .NET 框架 4.5