Ich habe angefangen zu lernen TPL Dataflow
. Ich bin bemüht, den Unterschied zwischen Task.ContinueWith
und Datenfluss zu finden. Unten sind die zwei Beispielcodes, die das gleiche Ziel haben. Zuerst wird mit Task.ContinueWith
und später mit Datenfluss getan.
Unten ist das Beispiel mit Task.ContinueWith
task.continuewith vs Datenfluss 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();
und unten ist die gleiche
mit Datenfluß getanvar 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
sieht einfach aus, als die lange Syntax, die Datenfluß zur Verfügung stellt. Kann jemand bitte den Unterschied zwischen den beiden klären.