コントロールの基になるハンドルが作成されたスレッド上で、指定した引数で指定したデリゲートを非同期的に実行します。
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)
Public Function BeginInvoke ( _ method As Delegate, _ ParamArray args As Object() _ ) As IAsyncResult
public IAsyncResult BeginInvoke( Delegate method, params Object[] args )
public: virtual IAsyncResult^ BeginInvoke( Delegate^ method, ... array<Object^>^ args ) sealed
abstract BeginInvoke : method:Delegate * args:Object[] -> IAsyncResult override BeginInvoke : method:Delegate * args:Object[] -> IAsyncResult
パラメーター
- method
- 型: System.Delegate
args パラメーターに指定されている数および型と同じ数および型のパラメーターをとるメソッドへのデリゲート。
- args
- 型: System.Object[]
特定のメソッドに引数として渡すオブジェクトの配列。 引数が必要ない場合は、null を指定できます。
実装
ISynchronizeInvoke.BeginInvoke(Delegate, Object[])| 例外 | 条件 |
|---|---|
| InvalidOperationException |
適切なウィンドウ ハンドルが見つかりません。 |
デリゲートが非同期的に呼び出され、このメソッドはすぐに制御を戻します。 このメソッドは、どのスレッドからも呼び出すことができ、コントロールのハンドルを所有しているスレッドからでも呼び出すことができます。 コントロールのハンドルがまだ存在しない場合、このメソッドはコントロールの親チェインを検索し、ウィンドウ ハンドルを持つコントロールまたはフォームを見つけます。 適切なハンドルが見つからない場合、BeginInvoke は例外をスローします。 Delegate メソッド内の例外は、トラップされていないと見なされ、アプリケーションのトラップされていない例外ハンドラーに送られます。
必要に応じて、EndInvoke を呼び出してデリゲートから戻り値を取得できますが、これは必須ではありません。 EndInvoke は戻り値を取得できるまでブロックします。
メモ
|
|---|
|
コントロールのほとんどのメソッドは、コントロールが作成されたスレッドからのみ呼び出すことができます。 コントロールのハンドルが既に作成されている場合、InvokeRequired プロパティ以外に、スレッド セーフである 4 つのメソッド Invoke、BeginInvoke、EndInvoke、および CreateGraphics がコントロールにあります。 コントロールのハンドルがバックグラウンド スレッドで作成される前に CreateGraphics を呼び出すと、無効なスレッド間の呼び出しが発生する可能性があります。 その他のすべてのメソッドの呼び出しについては、Invoke メソッドの 1 つを使用して、その呼び出しをコントロールのスレッドにマーシャリングする必要があります。 invoke メソッドは、常にコントロールのスレッドでコールバックを呼び出します。 |
メモ
|
|---|
|
メッセージを処理するスレッドが既に非アクティブになっていた場合は、例外がスローされます。 |
BeginInvoke メソッドの使用方法を次のコード例に示します。
Delegate Sub MyDelegate(myControl As Label, myArg2 As String) Private Sub Button_Click(sender As Object, e As EventArgs) Dim myArray(1) As Object myArray(0) = New Label() myArray(1) = "Enter a Value" myTextBox.BeginInvoke(New MyDelegate(AddressOf DelegateMethod), myArray) End Sub 'Button_Click Public Sub DelegateMethod(myControl As Label, myCaption As String) myControl.Location = New Point(16, 16) myControl.Size = New Size(80, 25) myControl.Text = myCaption Me.Controls.Add(myControl) End Sub 'DelegateMethod
public delegate void MyDelegate(Label myControl, string myArg2); private void Button_Click(object sender, EventArgs e) { object[] myArray = new object[2]; myArray[0] = new Label(); myArray[1] = "Enter a Value"; myTextBox.BeginInvoke(new MyDelegate(DelegateMethod), myArray); } public void DelegateMethod(Label myControl, string myCaption) { myControl.Location = new Point(16,16); myControl.Size = new Size(80, 25); myControl.Text = myCaption; this.Controls.Add(myControl); }
private: delegate void MyDelegate( Label^ myControl, String^ myArg2 ); void Button_Click( Object^ /*sender*/, EventArgs^ /*e*/ ) { array<Object^>^myArray = gcnew array<Object^>(2); myArray[ 0 ] = gcnew Label; myArray[ 1 ] = "Enter a Value"; myTextBox->BeginInvoke( gcnew MyDelegate( this, &MyForm::DelegateMethod ), myArray ); } void DelegateMethod( Label^ myControl, String^ myCaption ) { myControl->Location = Point(16,16); myControl->Size = System::Drawing::Size( 80, 25 ); myControl->Text = myCaption; this->Controls->Add( myControl ); } delegate void InvokeDelegate();
.NET Framework
サポート対象: 4、3.5、3.0、2.0、1.1、1.0.NET Framework Client Profile
サポート対象: 4、3.5 SP1Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2
.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
メモ