我正在做一个项目,我需要一些帮助。这是一个代码片段:
private void MassInvoiceExecuted()
{
foreach (Invoice invoice in Invoices)
{
DoStuff(invoice);
//I'd like to wait 8 seconds here before the next iteration
}
RefreshExecuted();
}
这怎么能轻松完成?我试过的是:
private async void MassInvoiceExecuted()
{
foreach (Invoice invoice in Invoices)
{
DoStuff(invoice);
await Task.Delay(8000);
}
RefreshExecuted();
}
尽管它确实等待了 8 秒而没有冻结 UI,但它也在RefreshExecuted()之前等待了大约 30 秒;我显然不熟悉异步等待,但这似乎是个好主意。
无论如何,我需要在每次迭代后等待 8 秒而不阻塞 UI,因为我必须能够通过单击按钮来中止循环。我考虑过计时器。将间隔设置为 8000 并创建一个包含什么的刻度方法?我不能将 MassInvoiceExecuted 中的所有内容都放在 tick 方法中,因为那是不对的。
任何帮助将非常感激。谢谢!