根据最佳实践,如果可以的话,建议使用 .ConfigureAwait(false)
和 async/await
关键字:
await Task.Run(RunSomethingAsync).ConfigureAwait(false);
能否请您举例说明我无法使用 .ConfigureAwait(false)
的情况?
最佳答案
当您真正关心您所在的同步上下文时,您“不能”使用ConfigureAwait(false)
。例如,想象一下 GUI 应用程序中的以下内容:
public async void SomeButtonClick(object sender, EventArgs e)
{
var result = await SomeAsyncOperation().ConfigureAwait(false);
textBox.Text = result;
}
当您从 ConfigureAwait
返回时,您将不会回到 UI 线程。这将导致 InvalidOperationException
。
关于c# - 当我不能使用 ConfigureAwait(false) 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377028/