參照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