2011-01-23 66 views
58

我有一個窗體經歷一個無限循環並處理數據。當我點擊一個「關閉」窗體的按鈕時,窗體即使關閉,也會繼續處理。我希望表單完全結束並退出其循環語句,然後打開一個新表單。VB.NET - 中斷窗體循環和結束窗體

這裏是我使用的關閉表單

frmMain.Close() 
frmMain.Dispose() 

注意代碼:我不使用線程,它只是一個簡單的VB.NET應用。我沒有關閉主要的啓動表單。

回答

82

這樣做的「正確」方式是真正使用後臺工作線程。但是這也可以在不需要後臺工作線程的情況下工作。

聲明表單類中的變量。

Private keepLoopAlive As Boolean 

然後再編寫處理循環是這樣的:

keepLoopAlive = True 

Do While keepLoopAlive 

    (your code that loops here) 

    DoEvents 

Loop 

然後在你關閉事件做:

keepLoopAlive = False 
Me.Close() 

這將導致循環結束它得到第一次機會,你的表格應該關閉。

請注意我已經從內存中編寫了這些代碼,而不是在IDE中,因此可能會出現拼寫錯誤。

+1

謝謝!我結束實施這個到我的程序中,它很好用!我原本是問我是否可以突然結束表單過程而不必特別退出循環,但聽起來這是不可能的。 – Phil 2011-01-24 04:08:32

11

我不是.NET開發人員,所以這可能是無效的,但如果我執行無限循環,我會檢查每次我開始循環仍然有效的某種布爾值,如果它失敗,退出循環。

當您關閉表單時,將布爾值設置爲false並且它將會退出,並且您可以有一個等待並重新啓動循環的外部循環,或者您可以重新啓動整個函數。