Control.BeginInvoke Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.