.Net中的多任务

c#

正如代码注释所要求的那样。我不知道为什么等待“continuation.Result”的主线程在打印出它的值之前有值。

static void Main(string[] args)
{
    Task<string> antecedent = Task.Delay(5000).ContinueWith<string>(x => 
    {
        Console.WriteLine("return in task1 {0}", Thread.CurrentThread.ManagedThreadId);

        return DateTime.Today.ToShortDateString();
    });
    
    Task<string> continuation = antecedent.ContinueWith(x => 
    {
        x.Wait(1000);
        Console.WriteLine("return in task2 {0}{1}",Thread.CurrentThread.ManagedThreadId,x.Status);
        return "Today is " + antecedent.Result;
    });

    Console.WriteLine("this will print before the result");

    Console.WriteLine(continuation.Result); //why this waiting ?

    Console.ReadKey();
}

回答

我不知道为什么等待“continuation.Result”的主线程在打印出它的值之前有值。

你还期望它做什么?它无法拥有之前打印值。

Task.Result 在内部等待任务:

访问属性的 get 访问器会阻塞调用线程,直到异步操作完成


以上是.Net中的多任务的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>