问题标签 [dispatchertimer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1896 浏览

wpf - WPF 应用程序问题和缓慢的 GUI 响应

我一直在分析一个 WPF 应用程序,它基本上从服务器获取数据并在 GUI 中显示数据。

这段代码不是我的,并且应用程序存在与 GUI 响应缓慢有关的问题,我正在尝试找出导致该问题的原因。

我想与您分享我的想法,即问题可能出在哪里,我想听听您对此有何看法,无论这是否有意义。

为了从服务器获取数据,应用程序使用了 7 个线程(这样做主要是因为应用程序逻辑,所以不要太在意为什么是 7 而不是一个......),现在,每个线程都是通过调用一个名为 CreateThreadForTask() 的方法创建的

当我调试代码时,我注意到所有线程都是使用 DispatcherTimer 创建的;我认为应用程序正在创建 7 个 DispatcherTimer,并将计时器的 Tick 事件与 RunMainSyncForTask() 方法链接起来,该方法在内部创建一个后台工作程序,从服务器获取数据并将该数据保存到本地数据库。

现在,这是从 MSDN

DispatcherTimer 在每个 Dispatcher 循环的顶部重新评估。

定时器不能保证在时间间隔发生时准确执行,但可以保证在时间间隔发生之前不会执行。这是因为 DispatcherTimer 操作像其他操作一样放置在 Dispatcher 队列中。DispatcherTimer 操作何时执行取决于队列中的其他作业及其优先级。

因此,基于此,我相信每次计时器执行滴答事件时应用程序都会向线程发送垃圾邮件,并且同时执行 7 次;由于 DispatcherTimer 的性质,所有这些操作都被添加到 Dispatcher 队列中,由于 Dispatcher 正忙,这使得 GUI 响应变慢。

此外,该应用程序的另一个问题是,当它运行时,它会占用大约 90-95% 的 CPU,我认为如果我的假设是正确的,这也可能是导致此问题的原因。

所以如果你能分享一些关于这个的内幕,我会很感激的。

谢谢。

0 投票
6 回答
19579 浏览

c# - DispatcherTimer 未触发 Tick 事件

我有一个 DispatcherTimer 我已经像这样初始化了:

_timer_Tick 事件永远不会被触发,我错过了什么吗?

0 投票
2 回答
1232 浏览

silverlight - 使用 MVVM 定期更新 silverlight 视图

我正在尝试在 Silverlight 中使用 MVVM,但我对它很陌生,所以我对某些事情不太确定。我有一个 silverlight 页面,它显示了一些服务器端操作的进度。当前进度来自 Web 服务,应该每隔几秒刷新一次(为了论证,假设为 10 秒)。

实现这一点的最佳方法是什么?我能想到的选择是:

  1. 在我的 ViewModel 的 Initalize 方法中初始化一个 DispatcherTimer 并从 DispatcherTimer 事件中刷新视图(将计时器详细信息放在 ViewModel 中)

  2. 创建一个围绕 DispatcherTimer(例如 PeriodicCommandExecutor)的包装器,它是一个类似于 WindowsForms 中的 Timer 控件的控件或资源,具有我绑定到 ViewModel 中的 Refresh 命令的命令属性(将计时器详细信息放在视图中)

我认为第二个选项是首选,因为它使 ViewModel 更易于测试,而 DispatcherTimer 是我不希望在我的 ViewModel 中适当地使用的 UI 实现细节。你同意?

如果是,您将如何创建这样的包装器。我开始做一个带有附加属性的 DependencyObject,但我不确定如何将 Interval 等属性值转发到内部 DispatcherTimer。当依赖项属性发生更改并且 DispatcherTimer 不是 DependencyObject 时,Silverlight 似乎没有提供任何事件,因此我无法直接将数据绑定到它的属性。

谢谢!

0 投票
1 回答
1149 浏览

c# - DispatcherTimer 和 WebClient.DownloadStringAsync 抛出“WebClient 不支持并发 I/O 操作”异常

我需要有关此代码的帮助

0 投票
1 回答
2088 浏览

c# - 两个 dispatchertimer 事件同时发生?

我有一个 wpf 应用程序,它在一个调度程序计时器中更新日期/时间,另一个是用于跟踪时间的 mp3 播放器计时器和用于播放时间的滑动条。是否可以运行 2 个调度程序计时器?

那是dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);dispatcherTimer.Tick += new EventHandler(mp3Timer_Tick);

0 投票
2 回答
1573 浏览

silverlight - 空闲状态检测 silverlight 4 应用程序

检测 silverlight 应用程序空闲状态的最佳方法是什么?到目前为止,我已经在网上阅读了很多文章,通常它们是针对 wpf/移动应用程序等的。

我创建了一个 DispatcherTimer,它在 5 分钟后锁定屏幕,看来我必须转到每个屏幕中的每个小部件(我的应用程序有大约 4-5 个屏幕)并添加一个 mousebuttondown 或 mouseenter 事件处理程序来重置此计时器。这似乎效率不高,但只是将处理程序添加到layroot也无济于事。

有什么有用的建议吗?

谢谢

0 投票
1 回答
990 浏览

c# - DispatcherTimer 在 Win 2k8 SP2 中的 Stop() 后继续触发

我今天收到了一个有趣的错误报告。

我有一个 DispatcherTimer,它的 Tick 调用一个 EventHandler,其中包含一个 Stop() 方法调用。这会停止我们在开发中使用的平台(Windows XP SP3 和 Windows 7)上的计时器,但在 Windows Server 2008 SP2 机器上运行时计时器似乎不会停止。

这是一个 .NET 3.5 项目。

我想知道这是否是 Win 2k8 中 System.Windows.Threading 中的一个已知错误,或者我在代码中做错了什么。

代码的相关部分如下:

提前谢谢了!

0 投票
1 回答
8163 浏览

c# - 带有 DispatcherTimer 的 C# WPF 计时器(秒表)

我正在尝试制作一个简单的秒表,但它不起作用。当我按下按钮时,应用程序就会崩溃。怎么了?

0 投票
1 回答
1726 浏览

windows-phone-7 - WP7 应用程序中的 DispatcherTimer 行为

我正在为 WP7 编写一个录音应用程序。我的 ViewModel 类中有一个 DispatcherTimer 对象,当录制发生时,它会计算经过的秒数以向用户显示录制的长度。我的应用程序有以下问题:

DispatcherTimer 的刻度间隔设置为一秒 (1000) 毫秒。

当我按下启动按钮时,DispatcherTimer 启动。当我按下停止按钮时, DispatcherTimers 线程退出。(马上!,以为我不打算那样))

如果我在快速按下停止后按下启动按钮(中间不到一秒),我的 DispatcherTimer 将无法再次启动,因为它还没有停止。(它的线程还没有退出)

基本上,我最关心的是为什么 DispatcherTimer 必须等到它的滴答时间,才能意识到它已经停止,并且它创建的执行滴答的线程必须退出?

我该如何解决这个问题?谢谢你。

0 投票
1 回答
264 浏览

c# - 在 observablecollection 中维护 60 个元素

嗨,我有一个 ObservableCollection 每分钟都在获取数据。当它到达一个小时时,我想清除第一个项目并将所有项目向上移动然后添加新项目,从而将其保持在 60 个元素。有谁知道该怎么做?

这是我的代码: