一个调度程序计时器,移动多个元素C#wpf
我正在尝试对多个元素(可视、移动stackpanel)使用一个调度程序计时器,移动多个元素C#wpf,c#,wpf,timer,dispatchertimer,C#,Wpf,Timer,Dispatchertimer,我正在尝试对多个元素(可视、移动stackpanel)使用Dispatcher 是否可以为多个元素调用相同的Dispatchermer\u Tick?它们同时移动,但使用循环?还有,我应该如何延迟调度计时器,以便在一段时间后创建新的部队 目前我还没有这样的东西 for (int i = 1; i < 3; i++) { dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHand
Dispatcher
是否可以为多个元素调用相同的Dispatchermer\u Tick
?它们同时移动,但使用循环?还有,我应该如何延迟调度计时器,以便在一段时间后创建新的部队
目前我还没有这样的东西
for (int i = 1; i < 3; i++)
{
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1);
index = i;
FirstTroop(i);
dispatcherTimer.Start();
}
for(int i=1;i<3;i++)
{
Dispatchermer=新Dispatchermer();
dispatchermer.Tick+=新事件处理程序(dispatchermer\u Tick);
Dispatchermer.Interval=新的时间跨度(0,0,0,0,1);
指数=i;
第一部队(一);
dispatchermer.Start();
}
是否可以为多个元素调用同一个Dispatchermer_Tick
是的,您可以在代码中的任何地方调用dispatchermer\u Tick(null,null)
。但建议将事件处理程序仅用于处理tick事件,并为此调用更有意义的方法。像一支队伍
:
dispatcherTimer_Tick(object sender, EventArgs e)
{
SpawnFirstTroop();
}
它们同时移动,但使用循环
因此,您需要在循环中调用dispatchermer\u Tick
void Start()
{
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(1000);
dispatcherTimer.Start();
}
dispatcherTimer_Tick(object sender, EventArgs e)
{
for (int i = 1; i < 3; i++)
{
SpawnTroop(i);
}
}
void Start()
{
Dispatchermer=新Dispatchermer();
dispatchermer.Tick+=新事件处理程序(dispatchermer\u Tick);
Dispatchermer.Interval=TimeSpan.From毫秒(1000);
dispatchermer.Start();
}
Dispatchermer_Tick(对象发送方,事件参数e)
{
对于(int i=1;i<3;i++)
{
部队(一);
}
}
还有,我应该如何延迟调度计时器,以便在一段时间后创建新的部队
根据MSDN:
如果在WPF应用程序中使用System.Timers.Timer,则值得注意的是System.Timers.Timer运行在与用户界面(UI)线程不同的线程上。为了访问用户界面(UI)线程上的对象,需要使用Invoke或BeginInvoke将操作发布到用户界面(UI)线程的调度程序上。使用Dispatcher而不是System.Timers.Timer的原因是,Dispatcher与Dispatcher运行在同一线程上,并且可以在Dispatcher上设置DispatcherPriority
有多种解决方案:
线程。将Dispatcher\u Tick
与Sleep
配合使用。但您可以使用Thread.Sleep
和计时器来延迟计时器的滴答事件处理程序
非常感谢您,先生,我自己做了一些类似的事情,但无论如何,谢谢您的时间:)我将再次尝试阅读MSDN文档。