プログラムは一般的に、非同期処理を行うことで効率を高められます。非同期とは一部の処理を同時に実行させることで、レスポンスを良くする効果があります。同時実行されるそれぞれの流れをスレッドといい、デリゲートを使えば各スレッドに処理を委任できるようになります。

非同期処理の中のデリゲート

表1●作成するプロパティ
表1●作成するプロパティ

 非同期にデリゲート利用する例として、非同期にフォルダツリーを生成してみます。画面デザイナ上で設定する内容は図6です。イベントとdataGridView1のプロパティは表1のように設定してください。textBox1にフォルダパスを入力し、button1をクリックすると、treeView1にそのフォルダ配下がツリー表示されます。treeView1に表示されたフォルダをクリックすると、dataGridView1にそのフォルダ内のファイルが一覧表示される仕組みです。

図6●デザイナの設定
図6●デザイナの設定

 用意するクラスはtreeView1のノードとして利用するリスト7のDirNodeクラス、フォルダ内のファイル情報を保持するリスト8のFileDataクラス、リスト9のForm1クラスになります。DirNodeクラスは、treeView1のノードとして利用するTreeNode継承クラスで、FileDataクラスの配列を保持します。

リスト7●FileDataクラスの配列を保持するDirNodeクラス
リスト7●FileDataクラスの配列を保持するDirNodeクラス
リスト8●フォルダ内のファイル情報を保持するFileDataクラス
リスト8●フォルダ内のファイル情報を保持するFileDataクラス
リスト9●ビューを作成するForm1クラス。GetDirNodeメソッドはシングルスレッド
リスト9●ビューを作成するForm1クラス。GetDirNodeメソッドはシングルスレッド