wpf - 在WPF中 sleep 循环

标签 wpf multithreading sleep

我一直在使用WPF和线程。

我想在for循环中暂停整个屏幕(仅适用于应用程序)。

例如。

foreach (classA a in classesA)
{
....
....
Thread.sleep(100);

}

但是,我发现它将休眠很长时间,然后一次执行所有语句。
这不是我想要的。我想在for循环的执行过程中休眠。也就是说,在第一个循环后要睡100毫秒,然后在第二个循环后要再睡...

我发现有些文章提到了DoEvents(),但是我对此并不十分熟悉,WPF似乎没有这种东西。

其他一些文章提到了DispatcherTimer。尽管如此,它仍不会锁定屏幕。
我想锁定整个屏幕(仅适用于应用程序),以防止在执行for循环期间单击任何按钮。

我该怎么办?

太感谢了!

最佳答案

如果您愿意尝试使用建议的asyncawait关键字,则可以使用类似的同步语义来实现 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/

相关文章:

c++ - 使用 C++ 实现线程

java - 如果在同步方法中调用,thread.yield() 是否会失去对对象的锁定?

c - 通过 SIGCHLD sleep

c - 进程的信号如何影响其子线程?

c# - 获取WPF中单击的矩形的名称

c# - Windows 7 计算器破坏 WPF 多点触控?

java - 加入超时的多个线程

c++ - 线程多次调用析构函数

wpf - TimeSpan 的 MultiBinding StringFormat

wpf - 共同的共享 View 。 View + View 模型或用户控件?