c# - 我应该在 Task.Run 操作中的 Task.Delay 上使用 ConfigureAwait(false) 吗?

标签 c# .net wpf task

在我的 WPF MVVM 应用程序中,我有一些永远运行的后台任务,我这样创建它:

Task.Run(async () =>
{
    while (true)
    {
        if (IsStarted)
        {
            // Do some processing and update the UI via bound properties.
        }

        await Task.Delay(300);
    }
});

我是否应该将其更改为 await Task.Delay(300).ConfigureAwait(false);?我环顾四周无法判断,但听起来它可能是多余的,因为它已经在线程池线程中等待。

最佳答案

Should I change it to await Task.Delay(300).ConfigureAwait(false);? I can't tell from looking around but it sounds like it might be redundant because it's being awaited from a thread pool thread already.

这将是多余的,因为该方法首先没有要捕获的上下文。

但是,作为一种风格偏好,我仍然会使用它。 ConfigureAwait(false) 的存在通知代码的读者,该方法的其余部分不需要在其原始上下文中恢复。

关于c# - 我应该在 Task.Run 操作中的 Task.Delay 上使用 ConfigureAwait(false) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43037782/

相关文章:

c# - COM 与 .Net 的互操作性 - 缺少方法/属性

c# - 在 Entity Framework 中的组内排序

WPF数据虚拟化ListView

c# - 使用 wpf 存储在外部 dll 中的引用图像

c# - 我们在哪里使用 Debug/Trace 语句

c# - 多个 IEnumerable 实现悖论

c# - 将 Swift 转换为 C# 以在 Xamarin 中使用

c# - 计算查询耗时

c# - PInvoke 整数编码返回不正确的结果

c# - 在 c++/cli 中包装 Interop HwndSource 以在 native c++/MFC 应用程序中使用