Re: Объясните поведение ContinueWith(..., TaskContinuationOptions.ExecuteSynchro
От: StatujaLeha на правах ИМХО
Дата: 02.01.17 13:52
Оценка:
Здравствуйте, AK107, Вы писали:

А если так?
            var task = Task.Delay(TimeSpan.FromSeconds(1));

            Console.WriteLine("Task: Delay started.");

            task.ContinueWith(x =>  // 1
            {
                Thread.Sleep(1000);
                Console.WriteLine("\tTask: ContinueWith started.");
                Thread.Sleep(1000);
                Console.WriteLine("\tTask: ContinueWith done.");
            }, TaskContinuationOptions.ExecuteSynchronously);

            Console.WriteLine("WhenAll: started.");
            var whenAll = Task.WhenAll(task);

            var T =  whenAll.ContinueWith(x =>  // 2
            {
                Thread.Sleep(100);   // 3
                Console.WriteLine("\tWhenAll: ContinueWith run.");
                Thread.Sleep(1000);
                Console.WriteLine("\tWhenAll: ContinueWith done.");
            }, TaskContinuationOptions.ExecuteSynchronously);

            Console.WriteLine("WhenAll: Wait started.");
            whenAll.Wait();
            Console.WriteLine("WhenAll: Wait done.");
            T.Wait();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.