Dispatcher.BeginInvoke Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 args
elemecie , 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
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
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 args
elemecie , 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
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
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
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.