在c#中一段时间​​内非阻塞等待/延迟的最佳实现是什么?

Sim*_*her 1 c# wpf windows-store-apps

目前,我需要在Windows应用商店应用项目中实现简单的非阻塞延迟功能.此函数不应执行任何操作,只是在特定时间段内空闲而不会阻止UI.我的问题是:如何正确实现这样的功能?我知道这是一个老问题,但在网上搜索后我真的不知道.

最好的祝愿!

[编辑]我试过这个但不行.

public static async Task WaitFor(int millisecondsDelay)
{
    var idleTask = Task.Run(() => { Task.Delay(millisecondsDelay); });
    await Task.WhenAny(new Task[] { idleTask });

}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ray 7

看到 Task.Delay

它使用计时器而不是阻塞线程来安排将来完成的任务.

等待5秒然后继续的示例:

private async Task DelayThenDoSomeWork()
{
    await Task.Delay(5000);
    // Do something
    var dialog = new MessageDialog("Waiting completed.");
    await dialog.ShowAsync();
}
Run Code Online (Sandbox Code Playgroud)