Task.Delay vs DispatcherTimer?

Tuy*_*ham 11 c# task delay dispatchertimer async-await

我正在考虑使用Task.Delay()不间断计时器,因为它更简单,更易读.

由于我是.NET的新手,我发现两个代码之间没有显着差异.你能告诉我他们之间的区别(如果有的话)吗?

// Create variable at some place
DispatcherTimer timer = new DispatcherTimer();

timer.Interval = TimeSpan.FromSeconds(5);
timer.Tick += timer_Elapsed;
timer.Start();

// Function other place
void timer_Elapsed(object sender, EventArgs e)
{
    //Do stuff
    }
Run Code Online (Sandbox Code Playgroud)

VS

// Every thing inside a function
async void TaskTimer()
{
    while (true)
    {
        await Task.Delay(5000);
        // Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ary 6

有两个主要区别:

  1. Task.Delay方法将延迟循环之间的指定时间量,而该DispatcherTimer方法将在指定的循环时间内开始新的循环.
  2. Task.Delay 更便携,因为它不依赖于绑定到特定UI的类型.

  • @Dunken:是的,你应该在一个不需要特定上下文的方法(例如UI上下文)中为每个`await`使用`ConfigureAwait(false)`. (3认同)