Dispatcher.BeginInvoke Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет делегат асинхронно в потоке Dispatcher , с которым связан.
Перегрузки
| Имя | Описание |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Выполняет указанный делегат асинхронно с указанными аргументами в потоке, на который был создан.Dispatcher |
| BeginInvoke(DispatcherPriority, Delegate) |
Выполняет указанный делегат асинхронно по указанному приоритету в потоке Dispatcher , с которым связан. |
| BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Выполняет указанный делегат асинхронно с указанными аргументами по указанному приоритету в потоке, на который был создан объект Dispatcher . |
| BeginInvoke(DispatcherPriority, Delegate, Object) |
Выполняет указанный делегат асинхронно по указанному приоритету и с указанным аргументом в потоке Dispatcher , с которым связан. |
| BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Выполняет указанный делегат асинхронно по указанному приоритету и с указанным массивом аргументов в потоке Dispatcher , с которым связан. |
Комментарии
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству Content объекта Button, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
BeginInvoke DispatcherOperation возвращает объект, который можно использовать для взаимодействия с делегатом, когда делегат находится в очереди событий.
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
Если одновременно выполняются BeginInvokeнесколько DispatcherPriority вызовов, они будут выполняться в том порядке, в который были сделаны вызовы.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.
BeginInvoke(Delegate, Object[])
Выполняет указанный делегат асинхронно с указанными аргументами в потоке, на который был создан.Dispatcher
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
Параметры
- method
- Delegate
Делегат к методу, который принимает параметры, указанные в args, который передается в Dispatcher очередь событий.
- args
- Object[]
Массив объектов для передачи в качестве аргументов заданному методу. Может иметь значение null.
Возвращаемое значение
Объект, который возвращается сразу после BeginInvoke вызова, который можно использовать для взаимодействия с делегатом, так как он ожидает выполнения в очереди событий.
Комментарии
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству Content объекта Button, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.
Применяется к
BeginInvoke(DispatcherPriority, Delegate)
Выполняет указанный делегат асинхронно по указанному приоритету в потоке Dispatcher , с которым связан.
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
Параметры
- priority
- DispatcherPriority
Приоритет, относительно других ожидающих операций в Dispatcher очереди событий, с которым вызывается указанный метод.
- method
- Delegate
Делегат метода, который не принимает аргументов, который передается в Dispatcher очередь событий.
Возвращаемое значение
Объект, который возвращается сразу после BeginInvoke вызова, который можно использовать для взаимодействия с делегатом, так как он ожидает выполнения в очереди событий.
- Атрибуты
Исключения
method равно null.
priority не является допустимым DispatcherPriority.
Примеры
В следующем примере показано, как поместить операцию в объект Dispatcher. Полный исходный код этого примера см. в разделе Single-Threaded Application с примером вычислений Long-Running.
Во-первых, делегат создается, который не принимает аргументы.
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
BeginInvoke(DispatcherPriority, Delegate) Далее вызывается. Так как каждое DispatcherObject свойство, возвращающее Dispatcher его, необходимое Dispatcher получается путем запроса DispatcherObject, в данном случае именованного ButtonstartStopButton. Вызов BeginInvoke(DispatcherPriority, Delegate) принимает два параметра: приоритет, для которого задано DispatcherPriority.Normalзначение , и обратный вызов, который передается через экземпляр делегата NextPrimeDelegate.
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
Комментарии
Если одновременно выполняются BeginInvokeнесколько DispatcherPriority вызовов, они будут выполняться в том порядке, в который были сделаны вызовы.
BeginInvoke DispatcherOperation возвращает объект, который можно использовать для взаимодействия с делегатом, когда делегат находится в очереди событий.
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству Content объекта Button, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.
См. также раздел
Применяется к
BeginInvoke(Delegate, DispatcherPriority, Object[])
Выполняет указанный делегат асинхронно с указанными аргументами по указанному приоритету в потоке, на который был создан объект Dispatcher .
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
Параметры
- method
- Delegate
Делегат к методу, который принимает параметры, указанные в args, который передается в Dispatcher очередь событий.
- priority
- DispatcherPriority
Приоритет, относительно других ожидающих операций в Dispatcher очереди событий, с которым вызывается указанный метод.
- args
- Object[]
Массив объектов для передачи в качестве аргументов заданному методу. Может иметь значение null.
Возвращаемое значение
Объект, который возвращается сразу после BeginInvoke вызова, который можно использовать для взаимодействия с делегатом, так как он ожидает выполнения в очереди событий.
Комментарии
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству Content объекта Button, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.
Применяется к
BeginInvoke(DispatcherPriority, Delegate, Object)
Выполняет указанный делегат асинхронно по указанному приоритету и с указанным аргументом в потоке Dispatcher , с которым связан.
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
Параметры
- priority
- DispatcherPriority
Приоритет, относительно других ожидающих операций в Dispatcher очереди событий, с которым вызывается указанный метод.
- method
- Delegate
Делегат метода, который принимает один аргумент, который передается в Dispatcher очередь событий.
- arg
- Object
Объект, который передается в качестве аргумента указанному методу.
Возвращаемое значение
Объект, который возвращается сразу после BeginInvoke вызова, который можно использовать для взаимодействия с делегатом, так как он ожидает выполнения в очереди событий.
- Атрибуты
Исключения
method равно null.
priority не является допустимым DispatcherPriority.
Примеры
В следующем примере показано, как поместить операцию в объект Dispatcher.
Сначала создается делегат, принимаюющий один аргумент, в данном случае строка.
private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)
BeginInvoke(DispatcherPriority, Delegate, Object) Далее вызывается. Так как каждое DispatcherObject свойство, возвращающее Dispatcher его, необходимое Dispatcher получается путем запроса DispatcherObject, в данном случае именованного GridtomorrowsWeather. Вызов BeginInvoke(DispatcherPriority, Delegate, Object) принимает три параметра: приоритет, который DispatcherPriority.Normalимеет значение; обратный вызов, который передается через экземпляр делегата OneArgDelegate; и строку с именем weather, которая является аргументом обратного вызова.
// 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)
Комментарии
arg может быть null , если аргументы не нужны.
BeginInvoke DispatcherOperation возвращает объект, который можно использовать для взаимодействия с делегатом, когда делегат находится в очереди событий.
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству содержимого Buttonпотока, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
Если одновременно выполняются BeginInvokeнесколько DispatcherPriority вызовов, они будут выполняться в том порядке, в который были сделаны вызовы.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.
См. также раздел
Применяется к
BeginInvoke(DispatcherPriority, Delegate, Object, Object[])
Выполняет указанный делегат асинхронно по указанному приоритету и с указанным массивом аргументов в потоке Dispatcher , с которым связан.
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
Параметры
- priority
- DispatcherPriority
Приоритет, относительно других ожидающих операций в Dispatcher очереди событий, с которым вызывается указанный метод.
- method
- Delegate
Делегат метода, который принимает несколько аргументов, который передается в Dispatcher очередь событий.
- arg
- Object
Объект, который передается в качестве аргумента указанному методу.
- args
- Object[]
Массив объектов для передачи в качестве аргументов указанному методу.
Возвращаемое значение
Объект, который возвращается сразу после BeginInvoke вызова, который можно использовать для взаимодействия с делегатом, так как он ожидает выполнения в Dispatcher очереди.
- Атрибуты
Исключения
method равно null.
DispatcherPriority не является допустимым приоритетом.
Комментарии
Параметр arg может быть, null если аргументы не нужны.
BeginInvoke DispatcherOperation возвращает объект, который можно использовать для взаимодействия с делегатом, когда делегат находится в очереди событий.
Возвращаемый DispatcherOperationBeginInvoke объектом можно использовать несколько способов взаимодействия с указанным делегатом, например:
DispatcherPriority Изменение делегата по мере ожидания выполнения в очереди событий.
Удаление делегата из очереди событий.
Дождитесь возвращения делегата.
Получение значения, возвращаемого делегатом после выполнения.
BeginInvoke является асинхронным; таким образом, элемент управления возвращается немедленно вызывающему объекту после вызова.
В WPF доступ к объекту DispatcherObject может получить только созданный поток. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое Button созданного в потоке пользовательского интерфейса. Чтобы фоновый поток получить доступ к свойству Content объекта Button, фоновый поток должен делегировать работу связанному Dispatcher с потоком пользовательского интерфейса. Это достигается с помощью либо InvokeBeginInvoke. Invoke синхронный и BeginInvoke асинхронный. Операция добавляется в очередь событий указанного Dispatcher объекта DispatcherPriority.
Если одновременно выполняются BeginInvokeнесколько DispatcherPriority вызовов, они будут выполняться в том порядке, в который были сделаны вызовы.
Если BeginInvoke вызывается для Dispatcher завершения работы, то для свойства состояния возвращаемого DispatcherOperation объекта задано значение Aborted.