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



我正在等待后尝试更新 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();
}

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

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

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

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

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

最新更新