【问题标题】:Decide When to Use ConfigureAwait(false)决定何时使用 ConfigureAwait(false)
【发布时间】:2013-09-11 07:29:15
【问题描述】:

如果调用图中“await”点之后的语句不访问类型不是从 System.Windows.UIElement 类派生的任何对象,我们可以说开发人员安全地为 Windows Mobile 应用程序使用 ConfigureAwait(false) 吗?

除了更新 GUI 元素之外,还必须在 UI 线程上执行哪些语句?

【问题讨论】:

    标签: c# async-await


    【解决方案1】:

    任何直接(或间接)操作 UI 元素的代码都应该在 UI 上下文中运行。通常,这仅包括直接操作和更新 ViewModel。

    在所有其他情况下,您应该使用ConfigureAwait(false)

    【讨论】:

    • quote yourself一个好的经验法则是使用ConfigureAwait(false),除非您知道自己确实需要上下文。
    • 我想实现一个静态分析来找出我不需要上下文的情况。如果我按照上面的方式实现会安全吗?
    • @TomK.:如果您实施静态分析以包含任何引发事件的代码,而该事件的任何订阅可能会更新 UI 元素,那么这就足够了。
    • ConfigureAwait(false) 使用时有什么好处?
    • @OwenJohnson:效率。具体来说,如果不需要,您的代码不会中断 UI 线程。
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多