では、作成した
MyFormクラスのインスタンスを作って表示させるプログラムを作成しましょう。これは
Programクラスとして用意しておくことにします。例によって、
Mainメソッドを用意して、そこで
MyFormを実行する処理を書いておけばよいでしょう。
下のリスト欄に、そのサンプルを挙げておきます。ここでは、いくつか見慣れないものが登場していますので順に説明しましょう。
●シングルスレッドの指定 [STAThread]
最初に、
Mainメソッドの手前にこんな文が書かれていますね? このように、メソッドの手前に
[○○]といった形式で書かれる文は「
属性」というものを指定するための記述です。つまり、そのメソッドの性質を指定するための記述です。
この「
STAThread」というのは、この
Mainメソッドがシングルスレッドで実行されることを示すものです(STAは「Single Thread Apartment」の略です)。.netフレームワークのウインドウ(ここでは
Formクラス)は、原則としてシングルスレッドで実行されるように設計されています。つまり、ウインドウの内部で呼び出されるすべての処理は、ウインドウを実行しているスレッド内ですべて処理される、ということを示します。
マルチスレッド対応だと、さまざまなところから同時にウインドウの機能を呼び出すことができますが、同時に複数のスレッドを管理してトラブルが起こらないようにする処理を自前で考えなければならず、とても大変です。シングルスレッドであれば、常に「1つのスレッドで1つの処理が実行される」という形になりますので、複数のスレッドが同時にアクセスしたりするために発生するトラブルの対応などややこしいことは何も考えずに済みます。
基本的に、
Formを実行する
Mainでは、必ず
[STAThread]を指定する、と考えてください。
●Applicationの実行Application.Run(new MyForm());
アプリケーションを実行し、そこで
MyFormを表示しているのがこの文です。アプリケーションは、
Applicationクラスとして用意されています。その中の「
Run」メソッドを呼び出すことで、アプリケーションが実行されます。
この
Runメソッドは、引数に
Windowクラスのインスタンスを指定することができます。
Windowクラスというのはウインドウのベースとなるクラスで、
Formクラスもこの
Windowを継承して作られています。これにより、そのウインドウをアプリケーションとして表示し実行する、というわけです。
この
Programクラスの部分は、表示するウインドウの内容がどう変わろうとほとんど違いはありません。ですから、「
Applicationの起動は、こう書く」と丸暗記してしまって構いません。