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

継続が実行される前に、アプリケーションが終了している可能性があります。メインの最後にブレークポイントを配置すると、そのブレークポイントですべてのスレッドが停止し、継続がまだ実行されていない場合は、終了するまで実行できません (おそらく出力が失われます)。

何が起こるかを確認するには、次のことを試してください。

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 に答える