gpt4 book ai didi

c# - 用不那么强烈的东西替换 thread.sleep

转载 作者:行者123 更新时间:2023-11-30 21:39:12 25 4
gpt4 key购买 nike

所以我了解到,我之前在我的 C# 控制台应用程序中使用“Thread.Sleep”的解决方案(由于等待网页做我总是无法使用普通的 Selenium/Chromedriver WebDriverWaits 实现的事情)不是一个很好的解决方案,因为它会在整个 sleep 期间卡住整个线程。

因为我不应该这样做:系统.Threading.Thread.Sleep(250);那我该怎么办?我希望它是一个单独的声明,而不是东西的包装器,因为这样很快就会变得非常困惑。我有很多地方使用过 Thread.Sleep。但显然我可以使用整个类来完成它 - 如有必要,我只想能够像普通方法一样调用它。

到目前为止,这是我发现的最好的工作:

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();
}
}

我应该用其他东西代替那个吗?

最佳答案

很少有真正充分的理由使用任何形式的 sleep 。在 1000 例中有 999 例是错误的编码。您应该等待所需的确切时间,而不是等待任意时间。例如你应该使用:

await MyFunction();

或回调/事件处理函数,例如

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

关于c# - 用不那么强烈的东西替换 thread.sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com