End ステートメント
更新 : 2007 年 11 月
プログラムの実行を終了させます。
End
解説
End ステートメントをプロシージャの任意の場所に記述すると、アプリケーション全体の実行を強制終了できます。End は Open ステートメントで開いたすべてのファイルを閉じ、アプリケーションのすべての変数を削除します。オブジェクトへの参照を保持している他のプログラムおよび実行中のコードがなくなると、アプリケーションはすぐに終了します。
メモ : |
---|
End ステートメントは、コードの実行を直ちに停止し、Dispose メソッドや Finalize メソッド、またはその他の Visual Basic コードを呼び出しません。他のプログラムが保持しているオブジェクトへの参照は、無効になります。End ステートメントが Try ブロックや Catch ブロックの内部で実行された場合、対応する Finally ブロックに制御が渡されることはありません。 |
Stop ステートメントはプログラムの実行を中断しますが、End ステートメントと異なり、コンパイル済みの実行可能ファイル (.EXE) の内部でない限り、ファイルを閉じたり、変数をクリアすることはありません。
End は開いているリソースの後処理を何も行わずにアプリケーションを終了させるため、使用する前にリソースを正しく閉じてみる必要があります。たとえば、アプリケーションのフォームが 1 つでも開いている場合は、制御が End ステートメントに到達する前にフォームを閉じてください。
End の使用はできる限り控えて、すぐに停止する必要がある場合にのみ使用してください。通常の方法 (Return ステートメント (Visual Basic) および Exit ステートメント (Visual Basic)) を使ってプロシージャを終了させれば、プロシージャを正しく閉じることができるだけでなく、正しく閉じるための処理を呼び出し元のコードに追加することもできます。たとえば、コンソール アプリケーションの場合なら、Main プロシージャから Return を実行するだけです。
セキュリティに関するメモ : |
---|
End ステートメントは、System 名前空間にある Environment クラスの Exit メソッドを呼び出します。Exit を使用するためには、UnmanagedCode のアクセス許可が必要です。アクセス許可がない場合は SecurityException エラーが発生します。 |
End (Visual Basic) に続けてキーワードを記述すると、該当するプロシージャまたはブロックの定義を終了するという意味になります。たとえば、End Function であれば Function プロシージャの定義が終了します。
使用例
ユーザーが要求した場合に End ステートメントを使用してコードの実行を終了させるコード例は、次のとおりです。
Sub Form_Load()
Dim answer As MsgBoxResult
answer = MsgBox("Do you want to quit now?", MsgBoxStyle.YesNo)
If answer = MsgBoxResult.Yes Then
MsgBox("Terminating program")
End
End If
End Sub
スマート デバイス開発者のためのメモ
このステートメントはサポートされていません。