Sdílet prostřednictvím


Dispatcher.BeginInvoke Metoda

Definice

Provede delegáta asynchronně ve vlákně, ke které Dispatcher je přidružen.

Přetížení

BeginInvoke(Delegate, Object[])

Spustí zadaný delegát asynchronně se zadanými argumenty ve vlákně, na které Dispatcher byl vytvořen.

BeginInvoke(DispatcherPriority, Delegate)

Provede zadaný delegát asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Spustí zadaný delegát asynchronně se zadanými argumenty v zadané prioritě ve vlákně, na které Dispatcher byl vytvořen.

BeginInvoke(DispatcherPriority, Delegate, Object)

Spustí zadaného delegáta asynchronně na zadanou prioritu a se zadaným argumentem ve vlákně, ke které Dispatcher je přidružen.

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Spustí zadaný delegát asynchronně v zadané prioritě a se zadaným polem argumentů ve vlákně, ke které Dispatcher je přidružen.

Poznámky

Ve WPF může k danému objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí získalo přístup k vlastnosti ButtonObsah vlákna , musí vlákno pozadí delegovat práci na Dispatcher přidružené k vláknu uživatelského rozhraní. K tomu slouží buď Invoke BeginInvokenebo . Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty událostí zadaného Dispatcher DispatcherPriority.

BeginInvoke je asynchronní; ovládací prvek se proto vrátí okamžitě k volajícímu objektu po jeho volání.

BeginInvokeDispatcherOperation vrátí objekt, který lze použít k interakci s delegátem, když je delegát ve frontě událostí.

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na provedení ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po provedení.

Pokud se provádí více BeginInvoke volání najednou DispatcherPriority, budou provedeny v pořadí, v jakém byly hovory provedeny.

Pokud BeginInvoke je volána u Dispatcher vypnutého stavu, je vlastnost stavu vrácené DispatcherOperation hodnoty nastavena na Aborted.

BeginInvoke(Delegate, Object[])

Spustí zadaný delegát asynchronně se zadanými argumenty ve vlákně, na které Dispatcher byl vytvořen.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke (Delegate method, params object[] args);
member this.BeginInvoke : Delegate * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As DispatcherOperation

Parametry

method
Delegate

Delegát metody, která přebírá parametry zadané v args, která se odešle do Dispatcher fronty událostí.

args
Object[]

Pole objektů, které se mají předat jako argumenty dané metodě. Může to být null.

Návraty

DispatcherOperation

Objekt, který se vrátí okamžitě po BeginInvoke volání, lze použít k interakci s delegátem, protože čeká na provedení ve frontě událostí.

Poznámky

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na provedení ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po provedení.

BeginInvoke je asynchronní; ovládací prvek se proto vrátí okamžitě k volajícímu objektu po jeho volání.

Ve WPF může k danému objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí získalo přístup k vlastnosti ButtonObsah vlákna , musí vlákno pozadí delegovat práci na Dispatcher přidružené k vláknu uživatelského rozhraní. K tomu slouží buď Invoke BeginInvokenebo . Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty událostí zadaného Dispatcher DispatcherPriority.

Pokud BeginInvoke je volána u Dispatcher vypnutého stavu, je vlastnost stavu vrácené DispatcherOperation hodnoty nastavena na Aborted.

Platí pro

BeginInvoke(DispatcherPriority, Delegate)

Provede zadaný delegát asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate) As DispatcherOperation

Parametry

priority
DispatcherPriority

Priorita vzhledem k ostatním čekajícími operacím ve Dispatcher frontě událostí, se kterou je vyvolána zadaná metoda.

method
Delegate

Delegát metody, která nepřebírá žádné argumenty, které se nasdílí do Dispatcher fronty událostí.

Návraty

DispatcherOperation

Objekt, který se vrátí okamžitě po BeginInvoke volání, lze použít k interakci s delegátem, protože čeká na provedení ve frontě událostí.

Atributy

Výjimky

method je null.

Příklady

Následující příklad ukazuje, jak umístit operaci na Dispatcher. Úplný zdrojový kód tohoto příkladu najdete v tématu Jednovláknová aplikace s ukázkou výpočtu Long-Running.

Nejprve se vytvoří delegát, který nepřijímá žádné argumenty.

public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()

BeginInvoke(DispatcherPriority, Delegate) Dále se volá. Vzhledem k tomu, že každá DispatcherObject má vlastnost, která vrací Dispatcher ji je přidružena, je požadovaná Dispatcher získána dotazováním DispatcherObject, v tomto případě pojmenované startStopButtonButton . Volání BeginInvoke(DispatcherPriority, Delegate) má dva parametry: prioritu, která je nastavena na DispatcherPriority.Normal, a zpětné volání, které se předává prostřednictvím instance delegáta NextPrimeDelegate.

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))

Poznámky

Pokud se provádí více BeginInvoke volání najednou DispatcherPriority, budou provedeny v pořadí, v jakém byly hovory provedeny.

BeginInvokeDispatcherOperation vrátí objekt, který lze použít k interakci s delegátem, když je delegát ve frontě událostí.

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na provedení ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po provedení.

BeginInvoke je asynchronní; ovládací prvek se proto vrátí okamžitě k volajícímu objektu po jeho volání.

Ve WPF může k danému objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí získalo přístup k vlastnosti ButtonObsah vlákna , musí vlákno pozadí delegovat práci na Dispatcher přidružené k vláknu uživatelského rozhraní. K tomu slouží buď Invoke BeginInvokenebo . Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty událostí zadaného Dispatcher DispatcherPriority.

Pokud BeginInvoke je volána u Dispatcher vypnutého stavu, je vlastnost stavu vrácené DispatcherOperation hodnoty nastavena na Aborted.

Viz také

Platí pro

BeginInvoke(Delegate, DispatcherPriority, Object[])

Spustí zadaný delegát asynchronně se zadanými argumenty v zadané prioritě ve vlákně, na které Dispatcher byl vytvořen.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke (Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.BeginInvoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As DispatcherOperation

Parametry

method
Delegate

Delegát metody, která přebírá parametry zadané v args, která se odešle do Dispatcher fronty událostí.

priority
DispatcherPriority

Priorita vzhledem k ostatním čekajícími operacím ve Dispatcher frontě událostí, se kterou je vyvolána zadaná metoda.

args
Object[]

Pole objektů, které se mají předat jako argumenty dané metodě. Může to být null.

Návraty

DispatcherOperation

Objekt, který se vrátí okamžitě po BeginInvoke volání, lze použít k interakci s delegátem, protože čeká na provedení ve frontě událostí.

Poznámky

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na provedení ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po provedení.

BeginInvoke je asynchronní; ovládací prvek se proto vrátí okamžitě k volajícímu objektu po jeho volání.

Ve WPF může k danému objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí mohlo přistupovat k vlastnosti ButtonObsah vlákna , musí vlákno pozadí delegovat práci na Dispatcher přidruženou k vláknu uživatelského rozhraní. Toho dosáhnete pomocí buď Invoke nebo BeginInvoke. Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty Dispatcher událostí v zadaném DispatcherPriority.

Je-li BeginInvoke volána na vypnuto Dispatcher , stav vlastnost vráceného DispatcherOperation je nastavena na Aborted.

Platí pro

BeginInvoke(DispatcherPriority, Delegate, Object)

Spustí zadaného delegáta asynchronně na zadanou prioritu a se zadaným argumentem ve vlákně, ke které Dispatcher je přidružen.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object) As DispatcherOperation

Parametry

priority
DispatcherPriority

Priorita vzhledem k ostatním čekajícími operacím ve Dispatcher frontě událostí, se kterou je vyvolána zadaná metoda.

method
Delegate

Delegát metody, která přebírá jeden argument, který je vložen do Dispatcher fronty událostí.

arg
Object

Objekt, který se má předat jako argument zadané metodě.

Návraty

DispatcherOperation

Objekt, který se vrátí okamžitě po BeginInvoke volání, lze použít k interakci s delegátem, protože čeká na spuštění ve frontě událostí.

Atributy

Výjimky

method je null.

Příklady

Následující příklad ukazuje, jak umístit operaci do Dispatcher.

Nejprve se vytvoří delegát, který přijme jeden argument, v tomto případě řetězec.

private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)

Dále se BeginInvoke(DispatcherPriority, Delegate, Object) volá. Vzhledem k tomu, že každý DispatcherObject má vlastnost, která vrací Dispatcher ji je přidružena, je požadovaná Dispatcher získána dotazováním DispatcherObject, v tomto případě pojmenované tomorrowsWeatherGrid . Volání má BeginInvoke(DispatcherPriority, Delegate, Object) tři parametry: prioritu, která je nastavena na DispatcherPriority.Normal; zpětné volání, které se předává prostřednictvím instance delegáta OneArgDelegate; a řetězec s názvem weather, což je argument zpětného volání.

// Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(
    System.Windows.Threading.DispatcherPriority.Normal,
    new OneArgDelegate(UpdateUserInterface), 
    weather);
' Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, New OneArgDelegate(AddressOf UpdateUserInterface), weather)

Poznámky

arg může být null v případě, že nejsou potřeba žádné argumenty.

BeginInvokeDispatcherOperation vrátí objekt, který lze použít k interakci s delegátem, když je delegát ve frontě událostí.

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na spuštění ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po jeho spuštění.

BeginInvoke je asynchronní; proto se ovládací prvek vrátí okamžitě volajícímu objektu po jeho volání.

Ve WPF může k ho objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí mohlo přistupovat k vlastnosti Buttonobsahu , vlákno pozadí musí delegovat práci na Dispatcher přidružené vlákno uživatelského rozhraní. Toho dosáhnete pomocí buď Invoke nebo BeginInvoke. Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty Dispatcher událostí v zadaném DispatcherPriority.

Pokud se současně provádí DispatcherPriorityvíce BeginInvoke volání, budou provedeny v pořadí, v jakém byla volání provedena.

Je-li BeginInvoke volána na vypnuto Dispatcher , stav vlastnost vráceného DispatcherOperation je nastavena na Aborted.

Viz také

Platí pro

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Spustí zadaný delegát asynchronně v zadané prioritě a se zadaným polem argumentů ve vlákně, ke které Dispatcher je přidružen.

public:
 System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As DispatcherOperation

Parametry

priority
DispatcherPriority

Priorita vzhledem k ostatním čekajícími operacím ve Dispatcher frontě událostí, se kterou je vyvolána zadaná metoda.

method
Delegate

Delegát na metodu, která přebírá více argumentů, které se nasdílí do Dispatcher fronty událostí.

arg
Object

Objekt, který se má předat jako argument zadané metodě.

args
Object[]

Pole objektů, které se mají předat jako argumenty zadané metodě.

Návraty

DispatcherOperation

Objekt, který se vrátí okamžitě po BeginInvoke volání, lze použít k interakci s delegátem, protože čeká na provedení ve frontě Dispatcher .

Atributy

Výjimky

method je null.

Poznámky

Parametr arg může být null v případě, že nejsou potřeba žádné argumenty.

BeginInvokeDispatcherOperation vrátí objekt, který lze použít k interakci s delegátem, když je delegát ve frontě událostí.

Objekt DispatcherOperation vrácený BeginInvoke pomocí několika způsobů lze použít k interakci se zadaným delegátem, například:

  • DispatcherPriority Změna delegáta, protože čeká na spuštění ve frontě událostí.

  • Odebrání delegáta z fronty událostí

  • Čeká se, až se delegát vrátí.

  • Získání hodnoty, kterou delegát vrátí po jeho spuštění.

BeginInvoke je asynchronní; proto se ovládací prvek vrátí okamžitě volajícímu objektu po jeho volání.

Ve WPF může k ho objektu přistupovat pouze vlákno, které vytvořilo DispatcherObject . Například vlákno na pozadí, které je vypnuté z hlavního vlákna uživatelského rozhraní, nemůže aktualizovat obsah vytvořeného Button ve vlákně uživatelského rozhraní. Aby vlákno na pozadí mohlo přistupovat k vlastnosti ButtonObsah vlákna , musí vlákno pozadí delegovat práci na Dispatcher přidruženou k vláknu uživatelského rozhraní. Toho dosáhnete pomocí buď Invoke nebo BeginInvoke. Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty Dispatcher událostí v zadaném DispatcherPriority.

Pokud se současně provádí DispatcherPriorityvíce BeginInvoke volání, budou provedeny v pořadí, v jakém byla volání provedena.

Je-li BeginInvoke volána na vypnuto Dispatcher , stav vlastnost vráceného DispatcherOperation je nastavena na Aborted.

Viz také

Platí pro