参照Software Project I am currently working on。WPF:使用定时器在线程中构建队列
我有下面的方法,基本上移动帆布带定时器:
DispatcherTimer dt = new DispatcherTimer(); //global
public void Ahead(int pix)
{
var movx = 0;
var movy = 0;
dt.Interval = TimeSpan.FromMilliseconds(5);
dt.Tick += new EventHandler((object sender, EventArgs e) =>
{
if (movx >= pix || movy >= pix)
{
dt.Stop();
return;
}
Bot.Body.RenderTransform = new TranslateTransform(movx++, movy++);
});
dt.Start();
}
public void TurnLeft(double deg)
{
var currAngle = 0;
dt.Interval = TimeSpan.FromMilliseconds(5);
dt.Tick += new EventHandler(delegate(object sender, EventArgs e)
{
if (currAngle <= (deg - (deg * 2)))
{
dt.Stop();
}
Bot.Body.RenderTransform = new RotateTransform(currAngle--, BodyCenter.X, BodyCenter.Y);
});
dt.Start();
}
现在,从另一个库,这些方法被称为像这样:
public void run()
{
Ahead(200);
TurnLeft(90);
}
现在当然,我希望这些动画在另一个之后发生,但是发生的情况是当第二种方法(在这种情况下为TurnLeft(90)
)被调用时,DispatchTimer
的dt.Tick
事件处理程序被覆盖,因此只有第二种方法d得到执行,因为它应该。
我需要创建某种排队方式,这样我就可以将方法推送到该队列,以便dt
(DispatchTimer
定时器)逐个执行它们......按照它们在“队列”中的顺序执行它们,
我可以这样做吗?我在这里的正确轨道上,还是完全偏离?
音序器!万分感谢! – discorax 2009-10-12 17:30:50