Task.ContinueWith()需要帮助

时间:2012-07-20 17:10:43

标签: c# .net multithreading

也许我错过了一些小事(如果是这样的话会删除帖子)。有人可以告诉我我做错了什么.ContinueWith()?我没有在屏幕上看到结果。

public static void Main()
{
    Task<int> t = new Task<int>(() => { return Sum(5); });
    t.Start();
    t.Wait();
    t.ContinueWith((task) => { Console.WriteLine(task.Result); });
    //Console.WriteLine(t.Result); //this works

    Console.Read();
}

public static int Sum(int n)
{
    return 50;//stub result
}

1 个答案:

答案 0 :(得分:3)

在继续运行之前,您的应用程序可能正在退出。如果在Main的末尾放置一个断点,那么在该断点处停止所有线程,如果延续还没有运行,则在退出之前不会允许它运行(并且可能会丢失输出)。

尝试以下操作,看看会发生什么:

public static void Main()
        {
            Task<int> t = new Task<int>(() => { return Sum(5); });
            t.Start();
            t.Wait();
            t.ContinueWith((task) => { Console.WriteLine(task.Result); });
            //Console.WriteLine(t.Result); //this works
            Console.ReadLine();
        }