好吧,我想知道Task.Delay使用Application.DoEvents是否更好?
示例代码:
private async void NonBlockingWaitAwhile(int milliseconds)
{
Stopwatch sWatch = Stopwatch.StartNew();
while (sWatch.Elapsed.Milliseconds <= milliseconds)
{
await Task.Delay(50);
}
}
Run Code Online (Sandbox Code Playgroud)
要么
private void WaitAwhile(int milliseconds)
{
Stopwatch sWatch = Stopwatch.StartNew();
while (sWatch.Elapsed.Milliseconds <= milliseconds)
{
Application.DoEvents();
}
}
Run Code Online (Sandbox Code Playgroud)
那么哪种方法更好(特别是我听说使用Application.DoEvents可能会导致错误,因为它会释放应用程序可能执行的所有待处理事件)
Task.Delay比DoEvents它避免重入更好.
但是,最好的解决方案是不使用它们.延迟只有少数有效用途,例如限制重试.绝大多数时间我都看到了延迟,这是错误的(例如,当正确的方法是解决实际问题时,编码人员正在使用它来避免竞争条件或解决尴尬的架构).
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |