我已经开始学习TPL Dataflow
。我正在努力找到Task.ContinueWith
和数据流之间的区别。以下是两个具有相同目标的样本代码。首先用Task.ContinueWith
以及后来的数据流完成。
下面是与Task.ContinueWith
task.continuewith vs dataflow in c#
var tk1 = Task.Run(() =>
{
Console.WriteLine("Entered 1st Task");
Thread.Sleep(3000);
return 2;
});
tk1.ContinueWith((t) =>
{
Console.WriteLine("Entered 2nd Task");
Thread.Sleep(2000);
Console.WriteLine(t.Result);
});
tk1.Wait();
实施例和下面是与数据流相同的完成
var df1 = new TransformBlock<int,int>(t =>
{
Console.WriteLine("Entered 1st DF");
Thread.Sleep(3000);
return 2;
});
var df2 = new ActionBlock<int>(t =>
{
Console.WriteLine("Entered 2nd Task");
Thread.Sleep(2000);
Console.WriteLine(t);
});
df1.LinkTo(df2);
df1.Completion.ContinueWith(t =>
df2.Complete());
df1.Post(2);
df2.Completion.Wait();
Task.ContinueWith
看起来比冗长语法,数据流提供了简单的。任何人都可以请澄清两者之间的差异。