在我的 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/