我一直在使用WPF和线程。
我想在for循环中暂停整个屏幕(仅适用于应用程序)。
例如。
foreach (classA a in classesA)
{
....
....
Thread.sleep(100);
}
但是,我发现它将休眠很长时间,然后一次执行所有语句。
这不是我想要的。我想在for循环的执行过程中休眠。也就是说,在第一个循环后要睡100毫秒,然后在第二个循环后要再睡...
我发现有些文章提到了DoEvents(),但是我对此并不十分熟悉,WPF似乎没有这种东西。
其他一些文章提到了DispatcherTimer。尽管如此,它仍不会锁定屏幕。
我想锁定整个屏幕(仅适用于应用程序),以防止在执行for循环期间单击任何按钮。
我该怎么办?
太感谢了!
最佳答案
如果您愿意尝试使用建议的async
和await
关键字,则可以使用类似的同步语义来实现 sleep 行为。您需要安装Async CTP来做到这一点。1
public aysnc void YourButton_Click(object sender, EventArgs args)
{
foreach (classA a in classes)
{
await Task.Delay(100);
}
}
1异步CTP使用
TaskEx
而不是Task
。
关于wpf - 在WPF中 sleep 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078596/