問題是您的GUI凍結並且在for循環的持續時間內沒有更新,因爲它在同一個線程上運行。要每秒鐘查看更改,需要在後臺線程上運行它。
您也可以使用System.Timers.Timer
來完成這項工作。將它設置爲
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.AutoReset = true;
和掛鉤在您處理Elapsed
事件滾動
timer.Elapsed += Timer_Elapsed;
timer.Start();
也將在您的for循環需要這樣的計數器。倒計時直到0與它在事件處理程序
int counter = 10;
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if(counter > 0)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -10, 0);
counter--;
}
else
{
System.Timers.Timer t = sender as System.Timers.Timer;
t.Stop();
}
}
這樣你就可以停止計時器10次迭代後
至於建議由Jakub Dąbek你也可以使用System.Windows.Forms.Timer。這看起來像這樣:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 1000;
timer.Tick += Timer_Tick;
timer.Start();
private void Timer_Tick(object sender, EventArgs e)
{
// here the same code as above
}
好的謝謝。我如何在後臺線程上運行它? – KangarooChief
@KangarooChief你可以使用計時器。我可以在一分鐘內給你一個例子 –
對於Windows Forms應用程序,你應該使用['System.Windows.Forms.Timer'](https://msdn.microsoft.com/en-us/library/system.windows.forms .timer(v = vs.110).aspx) –