Control.BeginInvoke Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spustí delegáta asynchronně ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku.
Přetížení
| Name | Description |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Spustí zadaný delegát asynchronně se zadanými argumenty ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku. |
| BeginInvoke(Action) |
Spustí zadaný delegát asynchronně ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku. |
| BeginInvoke(Delegate) |
Spustí zadaný delegát asynchronně ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku. |
BeginInvoke(Delegate, Object[])
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Spustí zadaný delegát asynchronně se zadanými argumenty ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku.
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
Parametry
- method
- Delegate
Delegát metody, která přebírá parametry stejného čísla a typu, které jsou obsaženy v parametru args .
- args
- Object[]
Pole objektů, které mají být předány jako argumenty dané metodě. To může být v null případě, že nejsou potřeba žádné argumenty.
Návraty
Představuje IAsyncResult výsledek BeginInvoke(Delegate) operace.
Implementuje
Výjimky
Nebyl nalezen žádný vhodný popisovač okna.
Příklady
Následující příklad kódu ukazuje použití BeginInvoke metody.
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
Poznámky
Delegát se nazývá asynchronně a tato metoda vrátí okamžitě. Tuto metodu můžete volat z libovolného vlákna, a to i z vlákna, které vlastní popisovač ovládacího prvku. Pokud popisovač ovládacího prvku ještě neexistuje, tato metoda vyhledá nadřazený řetězec ovládacího prvku, dokud nenajde ovládací prvek nebo formulář, který má popisovač okna. Pokud se nenajde žádný vhodný popisovač, BeginInvoke vyvolá výjimku. Výjimky v rámci metody delegáta jsou považovány za nepotřebné a odešlou se do obslužné rutiny výjimky, která není vynechaná.
Můžete volat EndInvoke načtení návratové hodnoty z delegáta, pokud je neccesary, ale to není povinné. EndInvoke bude blokovat, dokud nebude možné načíst vrácenou hodnotu.
Poznámka:
Většinu metod ovládacího prvku lze volat pouze z vlákna, ve kterém byl ovládací prvek vytvořen. Kromě InvokeRequired vlastnosti existují čtyři metody ovládacího prvku, které jsou bezpečné pro vlákno: Invoke, BeginInvoke, EndInvokea CreateGraphics pokud popisovač pro ovládací prvek již byl vytvořen. Volání CreateGraphics před vytvořením popisovače ovládacího prvku ve vlákně na pozadí může způsobit nelegální volání mezi vlákny. Pro všechna ostatní volání metod byste měli použít jednu z metod vyvolání zařazování volání do vlákna ovládacího prvku. Metody vyvolání vždy volají zpětná volání ve vlákně ovládacího prvku.
Poznámka:
Pokud vlákno, které by mělo zprávu zpracovat, již není aktivní, může být vyvolán výjimka.
Viz také
Platí pro
BeginInvoke(Action)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Spustí zadaný delegát asynchronně ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku.
public:
IAsyncResult ^ BeginInvoke(Action ^ method);
public IAsyncResult BeginInvoke(Action method);
member this.BeginInvoke : Action -> IAsyncResult
Public Function BeginInvoke (method As Action) As IAsyncResult
Parametry
- method
- Action
Delegát metody, která nepřijímá žádné parametry.
Návraty
Představuje IAsyncResult výsledek BeginInvoke(Action) operace.
Platí pro
BeginInvoke(Delegate)
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
- Zdroj:
- Control.cs
Spustí zadaný delegát asynchronně ve vlákně, na které byl vytvořen podkladový popisovač ovládacího prvku.
public:
IAsyncResult ^ BeginInvoke(Delegate ^ method);
public IAsyncResult BeginInvoke(Delegate method);
member this.BeginInvoke : Delegate -> IAsyncResult
Public Function BeginInvoke (method As Delegate) As IAsyncResult
Parametry
- method
- Delegate
Delegát metody, která nepřijímá žádné parametry.
Návraty
Představuje IAsyncResult výsledek BeginInvoke(Delegate) operace.
Výjimky
Nebyl nalezen žádný vhodný popisovač okna.
Příklady
Následující příklad kódu ukazuje použití BeginInvoke metody.
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
Poznámky
Delegát se nazývá asynchronně a tato metoda vrátí okamžitě. Tuto metodu můžete volat z libovolného vlákna, a to i z vlákna, které vlastní popisovač ovládacího prvku. Pokud popisovač ovládacího prvku ještě neexistuje, tato metoda vyhledá nadřazený řetězec ovládacího prvku, dokud nenajde ovládací prvek nebo formulář, který má popisovač okna. Pokud se nenajde žádný vhodný popisovač, BeginInvoke vyvolá výjimku. Výjimky v rámci metody delegáta jsou považovány za nepotřebné a odešlou se do obslužné rutiny výjimky, která není vynechaná.
Můžete volat EndInvoke načtení návratové hodnoty z delegáta, pokud je neccesary, ale to není povinné. EndInvoke bude blokovat, dokud nebude možné načíst vrácenou hodnotu.
Poznámka:
Většinu metod ovládacího prvku lze volat pouze z vlákna, ve kterém byl ovládací prvek vytvořen. Kromě InvokeRequired vlastnosti existují čtyři metody ovládacího prvku, které jsou bezpečné pro vlákno: Invoke, BeginInvoke, EndInvokea CreateGraphics pokud popisovač pro ovládací prvek již byl vytvořen. Volání CreateGraphics před vytvořením popisovače ovládacího prvku ve vlákně na pozadí může způsobit nelegální volání mezi vlákny. Pro všechna ostatní volání metod byste měli použít jednu z metod vyvolání zařazování volání do vlákna ovládacího prvku. Metody vyvolání vždy volají zpětná volání ve vlákně ovládacího prvku.
Poznámka:
Pokud vlákno, které by mělo zprávu zpracovat, již není aktivní, může být vyvolán výjimka.