Udostępnij za pośrednictwem


Dispatcher.BeginInvoke Metoda

Definicja

Wykonuje delegat asynchronicznie w wątku, z który Dispatcher jest skojarzony.

Przeciążenia

BeginInvoke(Delegate, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku Dispatcher , na który został utworzony.

BeginInvoke(DispatcherPriority, Delegate)

Wykonuje określony delegat asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony.

BeginInvoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami z określonym priorytetem w wątku, w ramach którego Dispatcher utworzono element .

BeginInvoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat asynchronicznie z określonym priorytetem i z określonym argumentem w wątku Dispatcher jest skojarzony.

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

Wykonuje określony delegat asynchronicznie na określonym priorytetycie i z określoną tablicą argumentów w wątku Dispatcher , z jakim jest skojarzony.

Uwagi

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Content elementu Button, wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

BeginInvokeDispatcherOperation Zwraca obiekt, który może służyć do interakcji z delegatem, gdy delegat znajduje się w kolejce zdarzeń.

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

Jeśli w tym samym DispatcherPriorityczasie zostanie wykonanych wiele BeginInvoke wywołań , zostaną one wykonane w kolejności, w której wykonano wywołania.

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

BeginInvoke(Delegate, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami w wątku Dispatcher , na który został utworzony.

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

Delegat do metody, która przyjmuje parametry określone w argselemecie , który jest wypychany do kolejki zdarzeń Dispatcher .

args
Object[]

Tablica obiektów, które mają być przekazywane jako argumenty do danej metody. Może to być null.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany natychmiast po BeginInvoke wywołaniu, który może służyć do interakcji z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.

Uwagi

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Content elementu Button, wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

Dotyczy

BeginInvoke(DispatcherPriority, Delegate)

Wykonuje określony delegat asynchronicznie z określonym priorytetem w wątku, z który Dispatcher jest skojarzony.

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

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, z którymi wywoływana jest określona metoda.

method
Delegate

Delegat do metody, która nie przyjmuje żadnych argumentów, które są wypychane do kolejki zdarzeń Dispatcher .

Zwraca

DispatcherOperation

Obiekt, który jest zwracany natychmiast po BeginInvoke wywołaniu, który może służyć do interakcji z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.

Atrybuty

Wyjątki

method to null.

priority element nie jest prawidłowym DispatcherPriorityelementem .

Przykłady

W poniższym przykładzie pokazano, jak umieścić operację na obiekcie Dispatcher. Pełny kod źródłowy tego przykładu można znaleźć w temacie Single-Threaded Application with Long-Running Calculation Sample (Aplikacja jednowątkowa z przykładem obliczeń Long-Running).

Najpierw tworzony jest delegat, który nie akceptuje żadnych argumentów.

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

BeginInvoke(DispatcherPriority, Delegate) Następnie zostanie wywołana nazwa . Ponieważ każda DispatcherObject właściwość, która zwraca Dispatcher , z którą jest skojarzona, żądana Dispatcher wartość jest uzyskiwana przez wykonanie DispatcherObjectzapytania względem obiektu , w tym przypadku Button o nazwie startStopButton. Wywołanie metody BeginInvoke(DispatcherPriority, Delegate) przyjmuje dwa parametry: priorytet, który jest ustawiony na DispatcherPriority.Normal, i wywołanie zwrotne, które jest przekazywane za pośrednictwem wystąpienia delegata NextPrimeDelegate.

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

Uwagi

Jeśli w tym samym DispatcherPriorityczasie zostanie wykonanych wiele BeginInvoke wywołań , zostaną one wykonane w kolejności, w której wykonano wywołania.

BeginInvokeDispatcherOperation Zwraca obiekt, który może służyć do interakcji z delegatem, gdy delegat znajduje się w kolejce zdarzeń.

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Content elementu Button, wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

Zobacz też

Dotyczy

BeginInvoke(Delegate, DispatcherPriority, Object[])

Wykonuje określony delegat asynchronicznie z określonymi argumentami z określonym priorytetem w wątku, w ramach którego Dispatcher utworzono element .

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

Delegat do metody, która przyjmuje parametry określone w argselemecie , który jest wypychany do kolejki zdarzeń Dispatcher .

priority
DispatcherPriority

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, z którymi wywoływana jest określona metoda.

args
Object[]

Tablica obiektów, które mają być przekazywane jako argumenty do danej metody. Może to być null.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany natychmiast po BeginInvoke wywołaniu, który może służyć do interakcji z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.

Uwagi

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Content elementu Button, wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

Dotyczy

BeginInvoke(DispatcherPriority, Delegate, Object)

Wykonuje określony delegat asynchronicznie z określonym priorytetem i z określonym argumentem w wątku Dispatcher jest skojarzony.

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

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, z którymi wywoływana jest określona metoda.

method
Delegate

Delegat do metody, która przyjmuje jeden argument, który jest wypychany do kolejki zdarzeń Dispatcher .

arg
Object

Obiekt, który ma być przekazywany jako argument do określonej metody.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany natychmiast po BeginInvoke wywołaniu, który może służyć do interakcji z delegatem, ponieważ oczekuje na wykonanie w kolejce zdarzeń.

Atrybuty

Wyjątki

method to null.

priority element nie jest prawidłowym DispatcherPriorityelementem .

Przykłady

W poniższym przykładzie pokazano, jak umieścić operację na obiekcie Dispatcher.

Najpierw tworzony jest delegat, który akceptuje jeden argument, w tym przypadku ciąg.

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

BeginInvoke(DispatcherPriority, Delegate, Object) Następnie zostanie wywołana nazwa . Ponieważ każda DispatcherObject właściwość, która zwraca Dispatcher , z którą jest skojarzona, żądana Dispatcher wartość jest uzyskiwana przez wykonanie DispatcherObjectzapytania względem obiektu , w tym przypadku Grid o nazwie tomorrowsWeather. Wywołanie metody BeginInvoke(DispatcherPriority, Delegate, Object) przyjmuje trzy parametry: priorytet, który jest ustawiony na DispatcherPriority.Normal; wywołanie zwrotne, które jest przekazywane za pośrednictwem wystąpienia delegata OneArgDelegate; i ciąg o nazwie weather, który jest argumentem wywołania zwrotnego.

// 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)

Uwagi

arg może być null , jeśli nie są potrzebne żadne argumenty.

BeginInvokeDispatcherOperation Zwraca obiekt, który może służyć do interakcji z delegatem, gdy delegat znajduje się w kolejce zdarzeń.

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Buttonzawartości elementu , wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

Jeśli w tym samym DispatcherPriorityczasie zostanie wykonanych wiele BeginInvoke wywołań , zostaną one wykonane w kolejności, w której wykonano wywołania.

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

Zobacz też

Dotyczy

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

Wykonuje określony delegat asynchronicznie na określonym priorytetycie i z określoną tablicą argumentów w wątku Dispatcher , z jakim jest skojarzony.

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

Priorytet względem innych oczekujących operacji w Dispatcher kolejce zdarzeń, z którymi wywoływana jest określona metoda.

method
Delegate

Delegat do metody, która przyjmuje wiele argumentów, które są wypychane do kolejki zdarzeń Dispatcher .

arg
Object

Obiekt, który ma być przekazywany jako argument do określonej metody.

args
Object[]

Tablica obiektów, które mają być przekazywane jako argumenty do określonej metody.

Zwraca

DispatcherOperation

Obiekt, który jest zwracany natychmiast po BeginInvoke wywołaniu, który może służyć do interakcji z delegatem, ponieważ oczekuje na wykonanie w Dispatcher kolejce.

Atrybuty

Wyjątki

method to null.

DispatcherPriority nie jest prawidłowym priorytetem.

Uwagi

Parametr arg może być null , jeśli nie są potrzebne żadne argumenty.

BeginInvokeDispatcherOperation Zwraca obiekt, który może służyć do interakcji z delegatem, gdy delegat znajduje się w kolejce zdarzeń.

Obiekt DispatcherOperation zwracany przez BeginInvoke program może być używany na kilka sposobów interakcji z określonym delegatem, na przykład:

  • DispatcherPriority Zmiana delegata jako oczekującego wykonania w kolejce zdarzeń.

  • Usuwanie delegata z kolejki zdarzeń.

  • Oczekiwanie na powrót delegata.

  • Uzyskanie wartości zwracanych przez delegata po jego wykonaniu.

BeginInvoke jest asynchroniczna; dlatego kontrolka zwraca natychmiast do obiektu wywołującego po wywołaniu.

W WPF tylko wątek, który utworzył obiekt DispatcherObject , może uzyskać dostęp do tego obiektu. Na przykład wątek w tle, który jest odłączony od głównego wątku interfejsu użytkownika, nie może zaktualizować zawartości elementu Button utworzonego w wątku interfejsu użytkownika. Aby wątek w tle uzyskiwał dostęp do właściwości Content elementu Button, wątek w tle musi delegować pracę do skojarzonego Dispatcher z wątkiem interfejsu użytkownika. Jest to realizowane przy użyciu polecenia Invoke lub BeginInvoke. Invoke jest synchroniczna i BeginInvoke jest asynchroniczna. Operacja jest dodawana do kolejki zdarzeń obiektu Dispatcher w określonym DispatcherPriorityobiekcie .

Jeśli w tym samym DispatcherPriorityczasie zostanie wykonanych wiele BeginInvoke wywołań , zostaną one wykonane w kolejności, w której wykonano wywołania.

Jeśli BeginInvoke parametr jest wywoływany w obiekcie, który Dispatcher został zamknięty, właściwość status zwróconego DispatcherOperation obiektu jest ustawiona na wartość Aborted.

Zobacz też

Dotyczy