当我不能使用ConfigureAwait(false)?

And*_*rei 8 .net c# asynchronous task-parallel-library async-await

根据最佳实践,建议使用.ConfigureAwait(false)async/await,如果你可以在关键字:

await Task.Run(RunSomethingAsync).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

当我不能使用时,你能给我一个例子.ConfigureAwait(false)吗?

Yuv*_*kov 11

当您真正关心您所处的同步上下文时,您"无法"使用ConfigureAwait(false).例如,在GUI应用程序中想象以下内容:

public async void SomeButtonClick(object sender, EventArgs e)
{
    var result = await SomeAsyncOperation().ConfigureAwait(false);
    textBox.Text = result;
}
Run Code Online (Sandbox Code Playgroud)

当你返回时ConfigureAwait,你不会回到UI线程.这将导致InvalidOperationException.