我已經得到了需要做以下類型的東西,最好是在GUI線程,因爲這是大多數的行動正在進行,並沒有長期運行OPS的應用程序:如何在C#中的GUI線程上啓動一系列定時事件?
Wait 1000
FuncA()
Wait 2000
FuncB()
Wait 1000
FuncC()
我知道我可以用一個狀態機的風格OnTick功能的計時器,但似乎很麻煩:
int _state;
void OnTick(object sender, EventArgs e) {
switch (_state) {
case 0:
FuncA();
_timer.Interval = TimeSpan.FromSeconds(2);
_state = 1;
break;
case 1:
FuncB();
_timer.Interval = TimeSpan.FromSeconds(1);
_state = 2;
break;
case 2:
FuncC();
_timer.IsEnabled = false;
_state = 0;
}
}
另外,我希望能夠使它足夠通用像做
RunSequenceOnGuiThread(new Sequence {
{1000, FuncA}
{2000, FuncB}
{1000, FuncC}};
有沒有一種習慣的方式來做這種事情?考慮到所有TPL的東西,或Rx,甚至F#中的計算表達式,我都會假設存在一個,但我沒有找到它。
什麼GUI庫您使用? Winforms,WPF或其他東西? – svick 2012-03-23 19:58:51
現在WPF,但我想要一個解決方案(或至少一種技術),以及WinForms的工作。 – lobsterism 2012-03-23 20:04:23
補充工具欄:我所做的一個改變 - 跨所有建議的解決方案 - 是使用TimeSpan而不是整數來實現延遲。 1000可能意味着一秒,1000秒等。TimeSpan本質上是清晰明確的。 – 2012-03-23 22:14:23