在winform中用Application.DoEvents()可以解决,但是WPF没有.DoEvents()方法了,可以用如下代码代替:
- public static class DispatcherHelper
- {
- [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
- public static void DoEvents()
- {
- DispatcherFrame frame = new DispatcherFrame();
- Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame);
- try { Dispatcher.PushFrame(frame); }
- catch (InvalidOperationException) { }
- }
- private static object ExitFrames(object frame)
- {
- ((DispatcherFrame)frame).Continue = false;
- return null;
- }
- }
复制代码
然后添加一个函数
- public static void Delay(int mm)
- {
- DateTime current = DateTime.Now;
- while (current.AddMilliseconds(mm) > DateTime.Now)
- {
- DispatcherHelper.DoEvents();
- }
- return;
- }
复制代码
然后把该用Thread.Sleep(xxx)的地方改成Delay(xxx) 即可。
转自:https://blog.csdn.net/wnk1997/article/details/106103208
|