2012-09-10 120 views
0

假設我將Form1作爲MDI Windows窗體應用程序中的父窗體。 它具有btnStart按鈕,它只是做了很多的計算,讓說:在父窗體運行時處理子窗體中的事件

double i; 
while(blnContinue) 
{ 
i=(i+1)%100000; 
} 

Form2的是btnStop按鈕一個孩子,這只是將blnContinue = FALSE;以便while循環中斷;

但問題是,當按下btnStop時,Form2無法引發事件。

在這種情況下,可以直接在單獨的線程中創建包含while循環的函數,並在父窗體中創建btnStop。

但我必須在主線程中做「無限」while循環,所以我不允許 將它作爲線程並啓動/停止它。

任何人都知道如何處理Form2的事件? 在此先感謝!

回答

0

您需要在循環內部調用Application.DoEvents,例如每100ms。我不認爲有任何其他的選擇。沒有這一點,你的整個應用程序將顯示鎖定,沒有任何事件會觸發任何地方,所以沒有機會做任何事有什麼東西阻止你使用另一個線程?

+0

感謝您的回答。我會嘗試,但我不確定它會影響性能......我必須在主線程中這樣做,因爲我的驅動程序使用單獨的工作時出現錯誤,現在我必須檢查它是否適用於主線程.... –

相關問題