Neb*_*ron 4 wpf timer freeze dispatcher
我使用WPF Dispatcher Timer时遇到了一些问题.在每个计时器滴答我的应用程序冻结片刻(直到计时器滴答方法完成).这是我的代码:
private DispatcherTimer _Timer = new DispatcherTimer();
_Timer.Tick += new EventHandler(_DoLoop);
_Timer.Interval = TimeSpan.FromMilliseconds(1500);
_Timer.Start();
Run Code Online (Sandbox Code Playgroud)
有什么方法可以避免这种情况并使我的应用程序顺利运行吗?
这是预料之中的.您的_DoLoop在与UI相同的线程上执行.
来自DispatcherTimer类 MSDN
如果在WPF应用程序中使用System.Timers.Timer,则值得注意的是System.Timers.Timer在与用户界面(UI)线程不同的线程上运行.为了访问用户界面(UI)线程上的对象,必须使用Invoke或BeginInvoke将操作发布到用户界面(UI)线程的Dispatcher上.使用与System.Timers.Timer相对的DispatcherTimer的原因是DispatcherTimer在与Dispatcher相同的线程上运行,并且可以在DispatcherTimer上设置DispatcherPriority.
如果您需要执行耗时的计算,请在另一个线程上运行它以保持UI响应.
| 归档时间: |
|
| 查看次数: |
4016 次 |
| 最近记录: |