My.Application.DoEvents メソッド
更新 : 2007 年 11 月
メッセージ キューに現在入っているすべての Windows メッセージを処理します。
' Usage
My.Application.DoEvents()
' Declaration
Public Sub DoEvents()
解説
アプリケーションに My.Application.DoEvents メソッドを使用すると、コードの実行中に発生する可能性のある他のイベントを処理できます。My.Application.DoEvents メソッドと DoEvents メソッドの動作は同じです。
Windows フォーム アプリケーションを実行すると、新しいフォームが作成され、イベントが処理されるのを待機し始めます。フォームはボタンのクリックなどのイベントを処理するたびに、そのイベントに関連するすべてのコードを処理します。他のすべてのイベントはキューの中で待機します。コードがイベントを処理する間、アプリケーションは応答しません。たとえば、ウィンドウは別のウィンドウが最前面に移動された場合は再描画されません。
コード内で My.Application.DoEvents を呼び出すと、アプリケーションは他のイベントを処理できます。たとえば、ループを使って ListBox にデータを追加し、ループの各ステップの後で My.Application.DoEvents を呼び出すと、別のウィンドウがフォームの前面にあるときにフォームを再描画できます。My.Application.DoEvents をコードから削除すると、ボタンのクリック イベントのハンドラが実行を終了するまで、フォームは再描画されません。
通常、このメソッドはループ内でメッセージを処理するために使います。
メモ : |
---|
My.Application.DoEvents メソッドがイベントを処理する方法は、フォームとすべて同じではありません。Use multithreading to make the form directly handle the events.詳細については、「Visual Basic におけるマルチスレッド」を参照してください。 |
注意 : |
---|
ユーザー インターフェイス (UI) イベントを処理するメソッドが My.Application.DoEvents メソッドを呼び出す場合、このメソッドは終了前にもう一度入られる可能性があります。これは、My.Application.DoEvents メソッドが Windows メッセージを処理し、Windows メッセージがイベントを発生させることがあるためです。 |
処理手順
My.Application.DoEvents メソッドに関連するタスクの例を次の表に示します。
目的 |
参照項目 |
---|---|
フォームがビジー状態のときでも UI 入力に応答できるようにする |
使用例
次の例は My.Application.DoEvents メソッドを使用して、TextBox1 の UI の更新を可能にします。
Private Sub TestDoEvents()
For i As Integer = 0 To 10000
TextBox1.Text = i.ToString
My.Application.DoEvents()
Next
End Sub
このコードは、Text プロパティを持つ TextBox1 コンポーネントが定義されたフォームに記述する必要があります。
必要条件
名前空間 : Microsoft.VisualBasic.ApplicationServices
クラス : WindowsFormsApplicationBase
アセンブリ : Microsoft Visual Basic ランタイム (Microsoft.VisualBasic.dll 内)
使用可能なプロジェクトの種類
プロジェクトの種類 |
使用可/不可 |
---|---|
Windows アプリケーション |
可 |
クラス ライブラリ |
不可 |
コンソール アプリケーション |
不可 |
Windows コントロール ライブラリ |
不可 |
Web コントロール ライブラリ |
不可 |
Windows サービス |
不可 |
Web サイト |
不可 |
アクセス許可
次のアクセス許可が必要になる可能性があります。
アクセス許可 |
説明 |
---|---|
ファイルとフォルダへのアクセス許可を制御します。関連する列挙値 : Unrestricted。 |
|
ユーザー インターフェイスとクリップボードに関連するアクセス許可を制御します。関連する列挙値 : AllWindows。 |
詳細については、「コード アクセス セキュリティ」および「アクセス許可の要求」を参照してください。