0

也许我错过了一些琐碎的事情(如果是这种情况,我会删除帖子)。有人可以告诉我这个 .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
}
4

1 回答 1

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();
        }
于 2012-07-20T17:49:52.880 回答