WPF 调度程序计时器滴答冻结了我的应用程序

发布于 2024-08-28 23:57:35 字数 306 浏览 4 评论 0原文

我在使用 WPF 调度程序计时器时遇到了一些问题。在每个计时器滴答声中,我的应用程序都会冻结一会儿(直到计时器滴答声方法完成)。这是我的代码:

private DispatcherTimer _Timer = new DispatcherTimer();

_Timer.Tick += new EventHandler(_DoLoop);
_Timer.Interval = TimeSpan.FromMilliseconds(1500);
_Timer.Start();

有什么方法可以避免这种情况并使我的应用程序顺利运行吗?

I've got a little problem using WPF Dispatcher Timer. On each timer tick my application freezes for a moment (until timer tick method finishes). This is my code:

private DispatcherTimer _Timer = new DispatcherTimer();

_Timer.Tick += new EventHandler(_DoLoop);
_Timer.Interval = TimeSpan.FromMilliseconds(1500);
_Timer.Start();

Is there any way to avoid this and have my application run smoothly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小猫一只 2024-09-04 23:57:35

这是预料之中的。你的 _DoLoop 与 UI 在同一个线程上执行。

来自 DispatcherTimer 类 MSDN

如果 System.Timers.Timer 用于
WPF应用,值得注意的地方
System.Timers.Timer 运行在
与用户不同的线程
界面(UI)线程。为了
访问用户界面上的对象
(UI)话题,有必要发帖
对调度程序的操作
用户界面 (UI) 线程使用
调用或开始调用。 原因
使用 DispatcherTimer 与
System.Timers.Timer 是
DispatcherTimer 运行在相同的
线程作为调度程序和
DispatcherPriority 可以设置
调度计时器。

如果您需要执行耗时的计算,请在另一个线程上运行它以保持 UI 响应。

This is expected. your _DoLoop is executed on the same thread as UI.

from DispatcherTimer Class MSDN

If a System.Timers.Timer is used in a
WPF application, it is worth noting
that the System.Timers.Timer runs on a
different thread then the user
interface (UI) thread. In order to
access objects on the user interface
(UI) thread, it is necessary to post
the operation onto the Dispatcher of
the user interface (UI) thread using
Invoke or BeginInvoke. Reasons for
using a DispatcherTimer opposed to a
System.Timers.Timer are that the
DispatcherTimer runs on the same
thread as the Dispatcher and a
DispatcherPriority can be set on the
DispatcherTimer.

If you need to execute time consuming computations run it on another thread to keep UI responsive.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文