Od kiedy zrozumiałem Task
w kontekście zagnieżdżonego zadania, naprawdę tego nie rozumiem- Dlaczego trzeci wydruk przed drukiem?Zadanie rodzica Task.ContinueWith() nie czeka na zakończenie zadania potomnego
Mimo, Użyłem Task.WaitAll(t)
, drukować 3rd linię przed linii.
Kod:
public static void Main()
{
Task t = new Task(
() =>
{
Thread.Sleep(2000);
Console.WriteLine("1st print...");
});
t.ContinueWith(
x =>
{
Thread.Sleep(2000);
Console.WriteLine("2nd print...");
},
TaskContinuationOptions.OnlyOnRanToCompletion);
t.Start();
Task.WaitAll(t);
Console.WriteLine("3rd print...");
Console.Read();
}
wyjściowa:
produkować ten sam wynik, nawet jeśli używam „TaskContinuationOptions.AttachedToParent” z opcją zadania należy dziecka. – nunu
@Andrey Oczywiście mamy podwójne pytanie, ale odpowiedź na to podwójne pytanie polega na utworzeniu tablicy zadań Task [], która jest rozwiązaniem, które znam. Ale chcę znać odpowiedź bez tworzenia tablicy Zadanie []. – nunu
Chcę korzystać z mojego samochodu, aby jechać do miejsc bez wpuszczania na niego gazu, ale się nie ruszy! – Jcl