6

一言で言えば、C#の例に従っていました。テキストによると、次のコードはブロックされていないはずですが、5 秒が経過するまでフォームが表示されないことがわかりました。

private void Form1_Load(object sender, EventArgs e)
{
    var tcs = new TaskCompletionSource<int>();

    new Thread(() => {Thread.Sleep(5000); tcs.SetResult(42); }).Start();

    Task<int> task = tcs.Task;
    MessageBox.Show(task.Result.ToString());
}

私はそれが Thread.Sleep() と関係があると感じており、新しいスレッドをスリープ状態にする代わりに、メインスレッドをスリープ状態にしています。

UI スレッドをブロックしているのはなぜですか?

4

2 に答える 2