调用对话框后,任务线程ID会更改

时间:2019-04-11 10:54:41

标签: c# winforms task

我试图在等待后更新UI。直到我在Task.Delay之前打开表单,然后发现线程ID发生变化,一切都很好。

谁能告诉我这里出什么问题了?

private async void TestTaskThread()
{       
    this.Text += " : " + Thread.CurrentThread.ManagedThreadId.ToString();

    Form2 form2 = new Form2();
    form2.ShowDialog();
    await Task.Delay(7);
    this.Text += " : " + Thread.CurrentThread.ManagedThreadId.ToString();
}

1 个答案:

答案 0 :(得分:0)

我无法复制它。我添加了一个按钮,然后单击以调用TestTaskThread方法。线程ID仍为1。

private async void btnShowDialogFromAsync_Click(object sender, EventArgs e)
{
    await TestTaskThread();
}

我还将方法的返回值更改为Task

复制它的唯一方法是将await配置为跳过恢复上下文。

await Task.Delay(7).ConfigureAwait(false);