2012-05-11 66 views
-3

我需要停止執行VB.net中的程序。在重複結構中,程序檢查變量是真是假。當變量爲false時,我需要停止程序執行。我不想關閉程序,只是停下來。我發現的一種方法是引發異常,但我不想將錯誤消息顯示給用戶。什麼是最好的方式來做到這一點?停止執行重複結構。 VB.NET

Do 
    If myvariable=false then 
    throw new exception... 'Silent exception 
    end if 
Loop until …. 

戴維斯

+1

你所說的「停止程序的執行」的意思是?在調試器中停止它?或者只是退出循環? –

+0

我會投入回報是正確的答案。 –

+0

@Yatrix:他比VB.NET好?那有什麼意思? VB.NET有一個'Return'關鍵字。 –

回答

1

編輯根據以下評論。

在這種情況下,我會使用類似的東西。

Do 
    If myvariable=false then 
     Return 
    end if 
Loop until …. 

我真的不知道你想要做什麼。

您可以通過使用Application.Exit()

通知所有消息泵必須終止關閉應用程序,然後關閉的消息後,所有應用程序窗口已被處理。

如果你想真的很突然,你可以撥打End聲明。

Terminates execution immediately. 

End語句停止執行代碼突然,並且不調用的Dispose或Finalize方法,或任何其他Visual Basic代碼。其他程序保存的對象引用無效。如果在Try或Catch塊中遇到End語句,則控件不會傳遞給相應的Finally塊。

您可以使用Stop語句掛起執行,但它會調用調試器。

如果在運行在集成開發環境(IDE)之外的代碼中遇到Stop語句,則會調用調試器。無論代碼是以調試模式還是零售模式編譯,情況都是如此。

或者,如果你只是想離開你的Do聲明瞭,你可以試試這個

Do 
    If myvariable=false then 
     Exit Do 
    end if 
Loop until …. 
+0

我的應用程序正在等待來自另一個應用程序的api的響應,並且我的程序正在運行迭代,而api的函數返回不是所需的值。由於各種原因,我可能永遠無法獲得重複結構條件的預期回報。因此,如果用戶看到獲得預期的功能返回所需的時間太長,他可以單擊一個按鈕(「停止」),這會使程序退出重複結構並停止,而不繼續到後繼節點。我不希望程序退出,而只是停止直到用戶單擊一個按鈕重新開始。 –

+0

@SammyDavis大多數結構都有退出它們的方式,就像我上面使用的Exit Do一樣。你可以使用的是'Exit Sub'或'Exit Function'或者簡單的'Return',這取決於你的結構所在的方法類型。 –

+0

VB.NET特有的Stop關鍵字的替代方法是使用所有.NET語言都支持的靜態System.Diagnostics.Debugger.Break()方法。 –

0

您可以退出與退出語句循環。或者,您可以使用拋出異常的方法並將該環繞在Try/Catch塊中,該塊捕獲該特定異常並將其忽略。

+0

Tks,我完成了最初的職位。再看一遍。 –

+0

那麼拋出異常只是爲了抓住併吞下它呢? –

+0

如果在循環退出後,您需要測試退出的原因,並根據退出是因爲進程已完成還是因爲用戶已取消而引發退出,並拋出UserCanceledException並不一定是一種不好的方法。 –

0

如果你真的想停止,那麼你可以使用Stop關鍵字。然而,我對你的問題沒有信心,這是你真正想要的,因爲它有不同的結果,取決於它是作爲exe運行還是在IDE中運行。

您的問題的一些更多的上下文將有助於找到問題的最佳答案。