我已經開始學習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
看起來比冗長語法,數據流提供了簡單的。任何人都可以請澄清兩者之間的差異。