0
我編寫了模擬尋路算法的應用程序。我可以運行算法或步驟(如調試)。但是當我運行算法時,我無法在算法完成之前進行任何修改。如何在循環內允許消息
private void menu_run_Click(object sender, EventArgs e)
{
algorithm.Reset();
while (algorithm.status == Algorithm.Status.Searching)
{
algorithm.MakeStep();
if (this.speed != 0) System.Threading.Thread.Sleep(this.speed);
drawing_area.Invalidate();
}
}
我想這是因爲我在一個週期內完成所有操作,系統無法處理我觸發的新消息(事件)。
那麼我應該如何更改我的代碼以便能夠在每次迭代後重新繪製更改?
- 我應該不知何故調用Message Dispatcher讓他在每次迭代後處理新消息嗎?
- 我應該創建自己的消息並使用消息完成周期內的所有工作嗎?
- 還是有更優雅的方式嗎?
作爲一個快速的回答,'Application.DoEvents'運行消息隊列處理,所以它可能是你想要的。在「Invalidate」後調用它,它應該處理重繪繪製區域。儘管如此,Timer組件可能會更有用。 – Luaan