考虑:
async Task FooAsync()
{
await BarAsync().ConfigureAwait(false);
UpdateUI(); // Bug
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种系统地确保不会发生这种情况的方法.
也许是一种命名约定,其中必须在UI线程上运行的方法获得特殊后缀.或静态检查,其中方法上的[UIThreadOnlyAttribute]意味着任何调用者必须具有相同的属性,并且可能不会调用ConfigureAwait(false).
有什么建议?
只要您的应用程序合理分层,就不应该成为问题.
UI层(例如,事件处理程序)和逻辑UI层(例如,ViewModel)需要UI上下文而不应使用ConfigureAwait.其他层应该使用ConfigureAwait.这是一个对我有用的简单指南.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |