Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用不那么强烈的东西代替睡眠_C# - Fatal编程技术网

C# 用不那么强烈的东西代替睡眠

C# 用不那么强烈的东西代替睡眠,c#,C#,因此,我了解到,我以前在C#console应用程序中使用“Thread.Sleep”的解决方案不是一个好的解决方案,因为它会在整个睡眠期间冻结整个线程 既然我不该这么做: 系统线程线程睡眠(250); 那我该怎么办?我希望它是一个单独的声明,而不是包装的东西,因为这会变得非常混乱,非常快。我有很多地方用过线。睡觉。但是很明显,我可以使用整个类来完成它——如果必要的话,我只希望能够像调用普通方法一样调用它 到目前为止,这是我发现最有效的方法: class Tools { private s

因此,我了解到,我以前在C#console应用程序中使用“Thread.Sleep”的解决方案不是一个好的解决方案,因为它会在整个睡眠期间冻结整个线程

既然我不该这么做: 系统线程线程睡眠(250); 那我该怎么办?我希望它是一个单独的声明,而不是包装的东西,因为这会变得非常混乱,非常快。我有很多地方用过线。睡觉。但是很明显,我可以使用整个类来完成它——如果必要的话,我只希望能够像调用普通方法一样调用它

到目前为止,这是我发现最有效的方法:

class Tools
{
    private static async Task _Sleep(int ms)
    {
        await Task.Delay(ms);
    }

    public static void Sleep(int ms)
    {
        var task = _Sleep(ms);
        task.Wait();
    }
}

我应该用别的东西来代替它吗?

很少有真正好的理由使用任何形式的睡眠。 在1000个案例中,有999个是错误的编码。 与其等待任意数量的时间,不如等待所需的确切时间。 例如,您应该使用:

await MyFunction();
或回调/事件处理程序函数,如

WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += Wb_DocumentCompleted;
...
private void Wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
 {
   //do your thing...
 }

不要睡觉。在这个问题上没有足够的背景。你根本不需要睡觉