Ich lerne Threading in diesen Tagen und war verwirrt zwischen dem Erstellen einer synchronen und asynchronen Aufgabe.Ich habe ein Stück Code geschrieben und es funktioniert nicht.Kann mir jemand einen Hinweis geben, was hier falsch ist.Synchron Task funktioniert nicht
Ich weiß, es könnte eine einfache Frage sein, aber wird mir wirklich helfen, das Konzept zu bekommen.
Was ich will - Sync Task 1 sollte Daten nur nach Sync-Task 2 geben und Sync-Task 3 ist asynchron.
Auch ich möchte es über Aufgabe tun und nicht Thread, wenn jemand helfen kann.
Vielen Dank im Voraus.
using System;
using System.Threading;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var syncTask1 = Task.Factory.StartNew(() =>
{
for (int ctr = 1; ctr <= 10; ctr++)
Console.WriteLine(ctr.ToString() + "1");
});
var syncTask2 = new Task(() =>
{
for (int ctr = 1; ctr <= 10; ctr++)
{
Console.WriteLine(ctr.ToString() + "2");
}
});
syncTask2.Start();
var syncTask3 = Task.Factory.StartNew(() =>
{
for (int ctr = 1; ctr <= 10; ctr++)
Console.WriteLine(ctr.ToString() + "3");
});
// syncTask.RunSynchronously();
Console.ReadLine();
}
}
Alle diese Aufgaben sind asynchron, und alle von ihnen werden auf einem anderen Thread von Ihrem Hauptthread ausgeführt. Wenn Aufgaben eine Sequenz haben sollen, müssen sie eine Sequenz haben - z. 'erwarten',' ContinueWith'. Schließlich, 'RunSynchronously' macht nicht, was Sie denken, es tut (ich stimme zu, der Name ist verwirrend) - lesen Sie die Dokumentation. – Luaan
Danke Sir, ich möchte nicht Async verwenden und warten, weil ich keine .net Framework-Version benötigt, um zu unterstützen. Auch, weil ich lerne und jede andere Methode kennen lernen möchte. – vic90
Wenn Sie "Aufgabe" haben, haben Sie auch "erwarten". Beide erfordern die gleiche .NET-Version, 'wait' ist nur eine Compiler-Sache - Sie können das Async-Target-Pack verwenden, um auf .NET 4.0" zurück zu warten ". Wenn Sie "warten" (eine sehr schlechte Idee, vor allem wenn Sie nicht wissen, was Sie tun) immer noch vermeiden wollen, ist "ContinueWith" * diese andere Methode - eine native unterstützt in 4.0 und die primäre Methode von Umgang mit asynchronen Workflows bei Aufgaben ohne "Warten". – Luaan