也许我错过了一些小事(如果是这样的话会删除帖子)。有人可以告诉我我做错了什么.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
}
答案 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();
}