Control.BeginInvoke Metódus

Definíció

Egy delegáltat aszinkron módon hajt végre azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

Túlterhelések

Name Description
BeginInvoke(Delegate, Object[])

A megadott meghatalmazottat aszinkron módon hajtja végre a megadott argumentumokkal azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

BeginInvoke(Action)

A megadott meghatalmazottat aszinkron módon hajtja végre azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

BeginInvoke(Delegate)

A megadott meghatalmazottat aszinkron módon hajtja végre azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

BeginInvoke(Delegate, Object[])

Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs

A megadott meghatalmazottat aszinkron módon hajtja végre a megadott argumentumokkal azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

public:
 virtual IAsyncResult ^ BeginInvoke(Delegate ^ method, cli::array <System::Object ^> ^ args);
public:
 virtual IAsyncResult ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public IAsyncResult BeginInvoke(Delegate method, object[] args);
public IAsyncResult BeginInvoke(Delegate method, params object[] args);
public IAsyncResult BeginInvoke(Delegate method, params object?[]? args);
abstract member BeginInvoke : Delegate * obj[] -> IAsyncResult
override this.BeginInvoke : Delegate * obj[] -> IAsyncResult
Public Function BeginInvoke (method As Delegate, args As Object()) As IAsyncResult
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As IAsyncResult

Paraméterek

method
Delegate

Olyan metódus delegálása, amely a paraméterben args található azonos számú és típusú paramétereket veszi fel.

args
Object[]

Egy objektumtömb, amelyet argumentumként ad át az adott metódusnak. Ez akkor fordulhat null elő, ha nincs szükség argumentumokra.

Válaszok

A IAsyncResult művelet eredményét BeginInvoke(Delegate) jelképező érték.

Megvalósítás

Kivételek

Nem található megfelelő ablakfogópont.

Példák

Az alábbi példakód a metódus használatát BeginInvoke mutatja be.

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();
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);
}
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

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

Megjegyzések

A delegáltat aszinkronnak nevezzük, és ez a metódus azonnal visszatér. Ezt a metódust bármilyen szálból meghívhatja, még a vezérlő fogópontját birtokba író szálról is. Ha a vezérlő fogópontja még nem létezik, ez a metódus megkeresi a vezérlő szülőláncát, amíg nem talál egy olyan vezérlőt vagy űrlapot, amely rendelkezik ablakfogópontpal. Ha nem található megfelelő fogópont, BeginInvoke kivételt eredményez. A delegálási metóduson belüli kivételek leképezetlennek minősülnek, és az alkalmazás nem leképezett kivételkezelőjének lesznek elküldve.

Meghívhatja EndInvoke a visszatérési érték lekérését a meghatalmazotttól, ha nincs megadva, de ez nem kötelező. EndInvoke letiltja, amíg a visszatérési érték le nem kérhető.

Note

A vezérlők legtöbb metódusa csak abból a szálból hívható meg, amelyben a vezérlő létre lett hozva. A tulajdonságon kívül InvokeRequired egy vezérlőn négy olyan metódus is található, amelyek szálbiztosak: Invoke, BeginInvoke, EndInvokeés CreateGraphics ha a vezérlő leírója már létrejött. A háttérszálon a vezérlő leírójának létrehozása előtt történő hívás CreateGraphics illegális szálközi hívásokat okozhat. Az összes többi metódushívás esetében az egyik meghívási metódust kell használnia a vezérlő szálára irányuló hívás átirányításához. A meghívási metódusok mindig meghívják a visszahívásokat a vezérlő szálán.

Note

Kivétel akkor fordulhat elő, ha az üzenetet feldolgozó szál már nem aktív.

Lásd még

A következőre érvényes:

BeginInvoke(Action)

Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs

A megadott meghatalmazottat aszinkron módon hajtja végre azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

public:
 IAsyncResult ^ BeginInvoke(Action ^ method);
public IAsyncResult BeginInvoke(Action method);
member this.BeginInvoke : Action -> IAsyncResult
Public Function BeginInvoke (method As Action) As IAsyncResult

Paraméterek

method
Action

Egy olyan metódus delegálása, amely nem vesz fel paramétereket.

Válaszok

A IAsyncResult művelet eredményét BeginInvoke(Action) jelképező érték.

A következőre érvényes:

BeginInvoke(Delegate)

Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs
Forrás:
Control.cs

A megadott meghatalmazottat aszinkron módon hajtja végre azon a szálon, amelyen a vezérlő mögöttes leírója létre lett hozva.

public:
 IAsyncResult ^ BeginInvoke(Delegate ^ method);
public IAsyncResult BeginInvoke(Delegate method);
member this.BeginInvoke : Delegate -> IAsyncResult
Public Function BeginInvoke (method As Delegate) As IAsyncResult

Paraméterek

method
Delegate

Egy olyan metódus delegálása, amely nem vesz fel paramétereket.

Válaszok

A IAsyncResult művelet eredményét BeginInvoke(Delegate) jelképező érték.

Kivételek

Nem található megfelelő ablakfogópont.

Példák

Az alábbi példakód a metódus használatát BeginInvoke mutatja be.

private:
   void Invoke_Click( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      myTextBox->BeginInvoke( gcnew InvokeDelegate( this, &MyForm::InvokeMethod ) );
   }

   void InvokeMethod()
   {
      myTextBox->Text = "Executed the given delegate";
   }
public delegate void InvokeDelegate();

private void Invoke_Click(object sender, EventArgs e)
{
   myTextBox.BeginInvoke(new InvokeDelegate(InvokeMethod));
}
public void InvokeMethod()
{
   myTextBox.Text = "Executed the given delegate";
}
Delegate Sub InvokeDelegate()

Private Sub Invoke_Click(sender As Object, e As EventArgs)
   myTextBox.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod))
End Sub

Public Sub InvokeMethod()
   myTextBox.Text = "Executed the given delegate"
End Sub

Megjegyzések

A delegáltat aszinkronnak nevezzük, és ez a metódus azonnal visszatér. Ezt a metódust bármilyen szálból meghívhatja, még a vezérlő fogópontját birtokba író szálról is. Ha a vezérlő fogópontja még nem létezik, ez a metódus megkeresi a vezérlő szülőláncát, amíg nem talál egy olyan vezérlőt vagy űrlapot, amely rendelkezik ablakfogópontpal. Ha nem található megfelelő fogópont, BeginInvoke kivételt eredményez. A delegálási metóduson belüli kivételek leképezetlennek minősülnek, és az alkalmazás nem leképezett kivételkezelőjének lesznek elküldve.

Meghívhatja EndInvoke a visszatérési érték lekérését a meghatalmazotttól, ha nincs megadva, de ez nem kötelező. EndInvoke letiltja, amíg a visszatérési érték le nem kérhető.

Note

A vezérlők legtöbb metódusa csak abból a szálból hívható meg, amelyben a vezérlő létre lett hozva. A tulajdonságon kívül InvokeRequired egy vezérlőn négy olyan metódus is található, amelyek szálbiztosak: Invoke, BeginInvoke, EndInvokeés CreateGraphics ha a vezérlő leírója már létrejött. A háttérszálon a vezérlő leírójának létrehozása előtt történő hívás CreateGraphics illegális szálközi hívásokat okozhat. Az összes többi metódushívás esetében az egyik meghívási metódust kell használnia a vezérlő szálára irányuló hívás átirányításához. A meghívási metódusok mindig meghívják a visszahívásokat a vezérlő szálán.

Note

Kivétel akkor fordulhat elő, ha az üzenetet feldolgozó szál már nem aktív.

Lásd még

A következőre érvényes: