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

use*_*558 3 .net c# 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);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ary 7

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

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

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