Tag: dispatchertimer

实时更新大量对象(1,000+)的最有效方法

迭代具有大量项目(1,000或更多)的集合并实时更新项目属性的最有效方法是什么? 目前,我的程序使用WriteableBitmap在canvas上为集合中的每个对象绘制一个图像(虽然我没有看到它与简单的椭圆之间的性能有任何差异)并将其移动到屏幕上。 我试图暂时保持逻辑尽可能简单。 [Magic] public class Entity : ObservableObject { public Entity() { Height = 16; Width = 16; Location = new Vector(Global.rand.Next(800), Global.rand.Next(800)); Image = Global.LoadBitmap(“Resources/Thing1.png”); } public int Height { get; set; } public int Width { get; set; } public Vector Location { get; set; } public WriteableBitmap Image { get; set; […]

在Dispatchertimer.Tick事件中发送一个额外的参数

我的问题是如何在Dispatchertimer.Tick事件中发送一些参数这里是代码:我想要的是在dispatcheTimer_Tick接收一个整数值 dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); private void dispatcherTimer_Tick(object sender, EventArgs e) { //.Text = DateTime.Now.Second.ToString(); } 我想做的是这样的事情 private void dispatcherTimer_Tick(object sender, EventArgs e,int a) { //.Text = DateTime.Now.Second.ToString(); } 如何从调用点发送值?

WPF C# – 定时器倒计时

如何在我用WPF C#编写的代码中实现以下内容? 我有一个ElementFlow控件,我在其中实现了一个SelectionChanged事件,当控件的项目选择发生变化时(根据定义)触发特定事件。 我希望它做的是: 启动计时器 如果计时器达到2秒,则启动一个MessageBox说(例如,“Hi there”) 如果在计时器达到2秒之前选择发生变化,则应重置计时器并重新开始计时。 这是为了确保只有在2秒内选择没有改变时才会启动冗长的操作,但我不熟悉WPF的DispatcherTimerfunction,因为我更了解Windows窗体的正常计时器。 谢谢, S.

DispatchTimer – 如果上一个tick仍在运行,则阻止触发tick事件

在Silverlight应用程序中,我有一段代码必须每500毫秒运行一次。 我计划使用DispatcherTimer来实现这一点(参见下面的代码)。 DispatcherTimer dt = new DispatcherTimer(); dt.Interval = new TimeSpan(0, 0, 0, 0, 500); // 500 Milliseconds dt.Tick += new EventHandler(dt_Tick); dt.Start(); 但是,可能会发生代码块执行时间超过500毫秒(代码块执行一些Web服务调用)。 如何确保当前正在进行呼叫时,DispatcherTimer不会触发另一个事件? 有哪些选择?什么是最好的方法? 使用锁?

如何在WPF中使DispatcherTimer事件更顺畅?

在我的WPF应用程序中,用户按下按钮以启动平滑旋转的3D模型,并按下按钮以停止旋转。 为此,我创建了一个DispatcherTimer: DispatcherTimer timer = new DispatcherTimer(); timer.Tick += new EventHandler( timer_Tick ); timer.Interval = new TimeSpan( 0, 0, 0, 0, 30 ); 当按下按钮时,我调用timer.Start() ,当按钮松开时,我调用timer.Stop() 。 timer_Tick函数改变模型的旋转: void timer_Tick( object sender, EventArgs e ) { spin = ( spin + 2 ) % 360; AxisAngleRotation3D rotation = new AxisAngleRotation3D( new Vector3D( 0, 1, 0 ), […]

异步友好的DispatcherTimer包装器/子类

我在我的代码中运行一个DispatcherTimer ,每30秒触发一次,从服务器更新系统状态。 即使我正在调试我的服务器代码,计时器也会在客户端中触发,所以如果我已经调试了5分钟,我可能会在客户端中进行十几次超时。 最后决定我需要解决这个问题,以便制作一个更加async / await友好的DispatcherTimer。 在DispatcherTimer运行的代码必须是可配置的,无论它是否是可重入的(即,如果任务已在运行,则不应尝试再次运行它) 应该是基于任务的(这是否需要我实际上在根处公开Task是一个灰色区域) 应该能够运行异步代码并await任务完成 无论是包装还是扩展DispatcherTimer可能并不重要,但如果您不知道如何使用它,包装它可能会稍微不那么模糊 可能为UI的IsRunning公开可绑定属性