アプリケーションのエントリポイントとは、そのアプリケーションが開始した時に、呼び出されるメソッドのことです。
VB.NETでは、Mainメソッドがエントリポイントですが、 WindowsフォームアプリケーションプロジェクトにはMainメソッドが見当たりません。 エントリポイントであるMainメソッドは、コンパイラによって自動的に作成されます。 以下の様にプロジェクトのプロパティ設定で「スタートアップ オブジェクト」を Form1 に 設定すれば自動でMainメソッドが生成され、その中で Form1 を生成し、表示する様になっています。
しかし、 Form1 の表示前に何かをしたいことがある場合、 例えば、アプリケーションの二重起動のチェックだとか、データベースのオープン処理などがあります。 その場合には、新しいモジュールかクラスを追加し、その中に Sub Main を宣言します。 以下は Sub Main をモジュールに宣言したときの例です。
(ファイル名は MainModule.vb としました)
尚、この MainModule を有効にするには、プロジェクトのプロパティ設定で 以下の様にする必要があります。
「アプリケーションフレームワークを有効にする」のチェックを外し無効にします。
無効にすることで、「スタートアップ オブジェクト」のコンボボックスに MainModule が現れますので、それを選びます。
モジュールではなく、クラスで行う場合は以下の様になります。
このソースの例では、二重起動のチェックを行っていますが、その他、データベースのオープン等 メイン画面が表示される前までに行いたい処理を、初期処理の部分に記述できます。
=====
2016/04/02:の時の情報
VB.NETでは、Mainメソッドがエントリポイントですが、 WindowsフォームアプリケーションプロジェクトにはMainメソッドが見当たりません。 エントリポイントであるMainメソッドは、コンパイラによって自動的に作成されます。 以下の様にプロジェクトのプロパティ設定で「スタートアップ オブジェクト」を Form1 に 設定すれば自動でMainメソッドが生成され、その中で Form1 を生成し、表示する様になっています。
しかし、 Form1 の表示前に何かをしたいことがある場合、 例えば、アプリケーションの二重起動のチェックだとか、データベースのオープン処理などがあります。 その場合には、新しいモジュールかクラスを追加し、その中に Sub Main を宣言します。 以下は Sub Main をモジュールに宣言したときの例です。
(ファイル名は MainModule.vb としました)
Module MainModule 'アプリケーションのメイン・エントリポイント <STAThread()> Sub Main() '----- 'メインフォームを表示する前に必要な初期処理を行う・・・ '----- '例:二重起動をチェックする If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then MessageBox.Show("多重起動はできません。") Return End If 'メイン画面の表示(ここでは例としてForm1の表示) Dim frm As New Form1 Application.Run(frm) '----- 'メインフォームが閉じた後で必要な終了処理を行う・・・ '----- End Sub End Module
尚、この MainModule を有効にするには、プロジェクトのプロパティ設定で 以下の様にする必要があります。
「アプリケーションフレームワークを有効にする」のチェックを外し無効にします。
無効にすることで、「スタートアップ オブジェクト」のコンボボックスに MainModule が現れますので、それを選びます。
モジュールではなく、クラスで行う場合は以下の様になります。
Public Class ClsMain 'アプリケーションのメイン・エントリポイント <STAThread()> Shared Sub Main() '----- 'メインフォームを表示する前に必要な初期処理を行う・・・ '----- '例:二重起動をチェックする If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then MessageBox.Show("多重起動はできません。") Return End If 'メイン画面の表示(ここでは例としてForm1の表示) Dim frm As New Form1 Application.Run(frm) '----- 'メインフォームが閉じた後で必要な終了処理を行う・・・ '----- End Sub End Class
このソースの例では、二重起動のチェックを行っていますが、その他、データベースのオープン等 メイン画面が表示される前までに行いたい処理を、初期処理の部分に記述できます。
=====
2016/04/02:の時の情報
PR
コメント