WindowsFormsApplicationBase.DoEvents メソッド

定義

メッセージ キューに現在ある Windows メッセージをすべて処理します。

public:
 void DoEvents();
public void DoEvents ();
member this.DoEvents : unit -> unit
Public Sub DoEvents ()

この例では、 メソッドを My.Application.DoEvents 使用して、 の UI TextBox1 を更新できるようにします。

Private Sub TestDoEvents()
    For i As Integer = 0 To 10000
        TextBox1.Text = i.ToString
        My.Application.DoEvents()
    Next
End Sub

このコードは、 プロパティを持つコンポーネントを TextBox1 持つフォームに含まれている Text 必要があります。

注釈

My.Application.DoEventsメソッドを使用すると、コードの実行中に発生する可能性がある他のイベントをアプリケーションで処理できます。 メソッドの動作は My.Application.DoEvents 、 メソッドと DoEvents 同じです。

Windows フォーム アプリケーションを実行すると、新しいフォームが作成され、イベントが処理されるまで待機します。 フォームは、ボタンクリックなどのイベントを処理するたびに、そのイベントに関連付けられているすべてのコードを処理します。 その他のすべてのイベントは、キュー内で待機します。 コードがイベントを処理している間、アプリケーションは応答しません。 たとえば、別のウィンドウを上にドラッグしても、ウィンドウは再描画されません。

コードで を呼び出 My.Application.DoEvents すと、アプリケーションは他のイベントを処理できます。 たとえば、コードがループ内の にデータを ListBox 追加し、ループの各ステップの後に を呼び出 My.Application.DoEventsすと、別のウィンドウがドラッグされたときにフォームが再描画されます。 コードからを削除 My.Application.DoEvents した場合、ボタンのクリック イベント ハンドラーの実行が完了するまで、フォームは再描画されません。

通常、このメソッドはループ内で使用してメッセージを処理します。

Note

My.Application.DoEvents メソッドがイベントを処理する方法は、フォームによる方法とは一部異なります。 マルチスレッドを使用して、フォームでイベントを直接処理します。 詳細については、「スレッドの使用とスレッド処理」を参照してください。

注意事項

ユーザー インターフェイス (UI) イベントを処理するメソッドが メソッドを My.Application.DoEvents 呼び出した場合、メソッドは終了する前に再入力される可能性があります。 これは、メソッドが Windows メッセージを My.Application.DoEvents 処理し、Windows メッセージがイベントを発生させる可能性があるために発生する可能性があります。

次の表に、 メソッドを含むタスクの例を My.Application.DoEvents 示します。

終了 解決方法については、
ビジー状態の間にフォームが UI 入力に応答できるようにする チュートリアル: イベントの処理

プロジェクトの種類別の可用性

プロジェクトの種類 使用可能
Windows フォーム アプリケーション はい
クラス ライブラリ いいえ
コンソール アプリケーション いいえ
Windows フォーム コントロール ライブラリ いいえ
Web コントロール ライブラリ いいえ
Windows サービス いいえ
Web サイト いいえ

適用対象

こちらもご覧ください