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.

См. также раздел

Применяется к