问题标签 [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.
c# - 进行自己的自定义 .NET 事件处理循环
几年前,我读了一本书,描述了如何使用自己的处理器覆盖 .NET 中的默认事件“调度程序”实现。
每当事件触发时,都会调用 myBar1 和 myBar2 处理程序。
我记得,这个循环的默认实现使用一个链表并简单地遍历该列表并按顺序调用 EventHandler 委托。
我的问题有两个:
- 有人知道我在读哪本书吗?
- 为什么要覆盖默认实现(可能会在书中回答)?
编辑:我指的这本书确实是 Jeffrey Richter 通过 C# 编写的 CLR
c# - DispatcherTimer 随着时间的推移占用 CPU 导致 WPF 视觉效果无法正确呈现
我有一个使用 DispatcherTimer 更新时钟滴答的 WPF 应用程序。
但是,在我的应用程序运行大约 6 小时后,时钟指针角度不再变化。我已经验证 DispatcherTimer 仍在使用 Debug 触发并且角度值仍在更新,但是屏幕渲染并未反映更改。
我还使用 WPFPerf 工具 Visual Profiler 验证了 Unlabeled Time、Tick(时间管理器)和 AnimatedRenderMessageHandler(媒体内容)都在逐渐增长,直到它们消耗了近 80% 的 CPU,但内存运行稳定。
hHandRT.Angle 是对 RotateTransform 的引用
此代码在大约 5 小时的直线运行中完美运行,但之后它会延迟并且角度变化不会呈现到屏幕上。有关如何解决此问题的任何建议或您可能知道的任何可能的解决方案。
.NET 3.5、Windows Vista SP1 或 Windows XP SP3(都显示相同的行为)
编辑:添加时钟滴答功能
由于时钟滴答声发生了太多事情,我目前正在尝试这种调整,看看它是否有帮助。太糟糕了,这个错误需要 5 个小时才能显现出来 :(
c# - 如何在倒数计时器后添加延迟
在触发相机上的释放之前,我正在使用 aDispatcherTimer
进行倒计时。该UpdateCountdown
方法用于在相机触发之前更改显示给用户的图像。我不想让该TakePicture
方法立即执行,而是希望在计数器达到零并显示最后一个图像后稍微延迟。
下面显示的代码导致在该_countdown = 1
点发生暂停。虽然最终图像TakePicture()
几乎同时显示和触发(我认为TakePicture
首先发生)。
我的时间安排没有考虑到什么?
silverlight - 将 dispatchertimer 与异步调用结合使用
我们在使用 WCF 和实体框架的 Silverlight 应用程序中存在问题,当用户通过关闭网页或浏览器而不是关闭 silverlight 应用程序来关闭应用程序时,我们需要捕获事件。这是为了验证是否进行了任何更改,在这种情况下,我们会在离开前询问用户是否要保存。
我们能够完成捕获网页关闭的部分:我们在应用程序对象中编写了一些代码,让网页调用silverlight应用程序对象中的方法。问题开始于在此方法中,我们对 Web 服务进行异步调用以验证是否发生了更改 (IsDirty)。我们正在使用 DispatcherTimer 来检查异步调用的返回。问题是异步调用永远不会完成(在调试模式下,它永远不会进入 _BfrServ_Customer_IsDirtyCompleted 方法),而在我们添加这个新功能之前它曾经正常工作。
您将在下面找到我们正在使用的代码。
我是结合异步调用编写计时器的新手,所以我可能做错了什么,但我不知道是什么。我也尝试了其他事情,但我们没有任何成功..
======================代码=========================== ====================
c# - DispatcherTimer 和高 CPU 负载
嘿,我有一个 WPF 应用程序并使用 DispatcherTimer 每分钟触发一个事件。我运行我的应用程序,cpu 负载跳到 100%。我尝试在不使用计时器的情况下编译应用程序,并且 cpu 负载非常低,正如我预期的那样。
示例代码:
没有该代码,cpu 负载很低。这应该是什么原因造成的?
更新 我可以使用其他计时器吗?准确性并不重要。
wpf - 由于 DispatcherTimer EventHandler,WPF 控件保留在内存中
哟
由于其中一个私有成员,我的 WPF 控件之一保留在内存中。有罪的成员是 DispatcherTimer,保留是因为 Tick 事件处理程序。(此泄漏是在工具 ANTS Memory Profiler 的帮助下检测到的)
显然,我在加载/卸载时设置/删除处理程序。并且控件已卸载...
但是我仍然遇到了这个麻烦(就像我的控制卡在内存中一样)。任何想法,THX
c# - 在进行 ReportProgress 时,BackgroundWorker 或(Dispatcher)操作已经完成
我使用DispatcherTimer
是因为我需要每隔几分钟做一次手术。在此我调用 aBackgroundWorker
来完成我的工作,然后使用附加到计时器的调度程序来更新我的 UI。我认为我遇到的错误与计时器有关,但我不确定。是调度员完成还是后台工作人员完成?如何在 foreach 中执行 ReportProgress?
错误:
此操作已经调用了 OperationCompleted,并且进一步的调用是非法的。
这样做时:
这是简化的:
编辑: 堆栈跟踪:
c# - 使用 DispatchTimer 将经过的时间精确到 1 毫秒
我正在尝试使用调度计时器测量按键事件之间经过的时间(以毫秒为单位),但是当声明调度计时器的间隔为 1 毫秒然后建立滴答事件时,它不会每 1 毫秒触发一次,而是在某个地方像 10- 100 毫秒(猜测)。如果此滴答事件未按时触发,我如何以毫秒为单位准确测量时间?我在 Silverlight 中执行此操作,似乎无法访问 System.Timers。System.Threading.Timer 似乎也是如此。
这是代码的基础知识:
有任何想法吗?
c# - C# silverlight 中的 DispatcherTimer 和 UI 刷新限制
对于一个对你们所有人来说可能很简单的问题,我再次表示歉意。我对 Silverlight 的幕后情况了解有限。
我有一个图表应用程序 (Visiblox),我用作滚动范围,每 20 毫秒更新一次,添加和删除一个点。在伪代码中:
在此图表工具中运行 6 系列时,它开始显示有点迟缓。将刻度更改为 10 毫秒没有任何区别,图表以相同的速度更新,因此似乎 20 毫秒是速度限制(UI 或图表?)。
我尝试CompositionTarget.Rendering
并得到了相同的结果:低于 20 毫秒,速度没有差异。
然后我不小心启用了两者,速度翻了一番。所以我用多个线程(2、3、4)进行了测试,速度增加了一倍、三倍和四倍。这还没有锁,因为我什至不知道我需要在哪个进程上生成锁,但没有数据损坏或内存泄漏。
我的问题是为什么 20ms 的缓慢图表不能在 10ms 运行,但在多线程时却快得离谱?UI 刷新过程是否运行得更快?图表计算是否加倍?或者单个 DispatcherTimer 的执行速度是否有限制?
谢谢!
编辑:我有嵌入式编码的背景,所以当我想到线程和时序时,我立即想到在硬件中切换一个引脚并连接一个示波器来测量进程长度。我是 C# 中的线程新手,并且没有用于连接范围的引脚。有没有办法以图形方式查看线程计时?
c# - 这个 Timer 会从内存中释放吗?
考虑 C# 中的这对函数:
调用 func1() 一次后,从那时起每 5 秒调用一次 func2(),即使我失去了对计时器的引用,因为它的范围仅限于 func1()。这意味着在调用 func1() 很久之后,计时器显然仍在内存中,正在做它的事情。我的问题是,如果我将其添加到 func2():
计时器会很快被垃圾收集器拾取,还是会继续留在内存中直到程序退出?如果它留在内存中,我如何手动将其标记为收集(或做类似的事情)?
我的第二个问题(如果您愿意回答的话)是常规计时器在这种情况下是否会具有完全相同的行为,或者我应该知道是否存在显着差异。
谢谢!