【发布时间】:2021-12-22 17:12:43
【问题描述】:
Task.Delay 和 Thread.Sleep 方法的内存消耗不同,我都用过,答案有很大的性能差异。有人知道为什么吗?
带有线程的代码
private void EncerrarWorkers()
{
foreach (BackgroundWorker worker in Workers)
{
worker.CancelAsync();
}
//Encerra os bots
Model.BotsClose();
for (int indexRobo = 0; indexRobo < Workers.Count(); indexRobo++)
{
if (Model.IsBotClosed(indexRobo))
continue;
Thread.Sleep(5000);
indexRobo--;
}
}
任务代码
private void EncerrarWorkers()
{
foreach (BackgroundWorker worker in Workers)
{
worker.CancelAsync();
}
//Encerra os bots
Model.BotsClose();
for (int indexRobo = 0; indexRobo < Workers.Count(); indexRobo++)
{
if (Model.IsBotClosed(indexRobo))
continue;
Task.Delay(5000);
indexRobo--;
}
}
两者都包含在 Windows 窗体的方法中。
利用代码块的性能差异: enter image description here
【问题讨论】:
-
您的意思是在没有
await的情况下使用Task.Delay?因为它可能不会做你想让它做的事情。
标签: c# .net multithreading