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 связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

BeginInvoke Возвращает DispatcherOperation объект, который может использоваться для взаимодействия с делегатом, когда делегат находится в очереди событий.

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

Если несколько BeginInvoke вызовов выполняются в одной и той же DispatcherPriority последовательности, они будут выполняться в том порядке, в котором были выполнены вызовы.

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения 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.

Возвращаемое значение

DispatcherOperation

Объект, возвращаемый сразу после вызова BeginInvoke, используемый для взаимодействия с делегатом, ожидающим выполнения в очереди событий.

Комментарии

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

В WPF только поток, создавший объект, DispatcherObject может обращаться к этому объекту. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое объекта Button , созданного в потоке пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к свойству Content объекта Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения 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.

Возвращаемое значение

DispatcherOperation

Объект, возвращаемый сразу после вызова BeginInvoke, используемый для взаимодействия с делегатом, ожидающим выполнения в очереди событий.

Атрибуты

Исключения

method имеет значение null.

priority не является допустимым DispatcherPriority.

Примеры

В следующем примере показано, как поместить операцию в Dispatcher . Полный исходный код этого примера см. в разделе Пример однопотокового приложения с Long-Runningным вычислением.

Во-первых, создается делегат, который не принимает аргументы.

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

Затем BeginInvoke(DispatcherPriority, Delegate) вызывается метод. Поскольку каждый из DispatcherObject них имеет свойство, которое возвращает, что Dispatcher он связан с, нужно Dispatcher получить, выполнив запрос к DispatcherObject , в данном случае Button с именем startStopButton . Вызов 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 объект, который может использоваться для взаимодействия с делегатом, когда делегат находится в очереди событий.

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

В WPF только поток, создавший объект, DispatcherObject может обращаться к этому объекту. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое объекта Button , созданного в потоке пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к свойству Content объекта Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения 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.

Возвращаемое значение

DispatcherOperation

Объект, возвращаемый сразу после вызова BeginInvoke, используемый для взаимодействия с делегатом, ожидающим выполнения в очереди событий.

Комментарии

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

В WPF только поток, создавший объект, DispatcherObject может обращаться к этому объекту. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое объекта Button , созданного в потоке пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к свойству Content объекта Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения 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

Объект, передаваемый в качестве аргумента указанному методу.

Возвращаемое значение

DispatcherOperation

Объект, возвращаемый сразу после вызова 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 , в данном случае Grid с именем tomorrowsWeather . Вызов 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 объект, который может использоваться для взаимодействия с делегатом, когда делегат находится в очереди событий.

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

В WPF только поток, создавший объект, DispatcherObject может обращаться к этому объекту. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое объекта Button , созданного в потоке пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к свойству Content объекта Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

Если несколько BeginInvoke вызовов выполняются в одной и той же DispatcherPriority последовательности, они будут выполняться в том порядке, в котором были выполнены вызовы.

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения 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[]

Массив объектов, передаваемых в качестве аргументов указанному методу.

Возвращаемое значение

DispatcherOperation

Объект, возвращаемый сразу после вызова BeginInvoke, используемый для взаимодействия с делегатом, ожидающим выполнения в очереди Dispatcher.

Атрибуты

Исключения

method имеет значение null.

DispatcherPriority не является допустимым приоритетом.

Комментарии

argПараметр может иметь значение, null Если аргументы не требуются.

BeginInvoke Возвращает DispatcherOperation объект, который может использоваться для взаимодействия с делегатом, когда делегат находится в очереди событий.

DispatcherOperationОбъект, возвращаемый функцией, BeginInvoke может использоваться несколькими способами для взаимодействия с указанным делегатом, например:

  • Изменение DispatcherPriority объекта делегата, так как он ожидает выполнения в очереди событий.

  • Удаление делегата из очереди событий.

  • Ожидание возврата делегата.

  • Получение значения, возвращаемого делегатом после его выполнения.

BeginInvoke является асинхронным; Следовательно, управление немедленно возвращается вызывающему объекту после его вызова.

В WPF только поток, создавший объект, DispatcherObject может обращаться к этому объекту. Например, фоновый поток, который отключается из основного потока пользовательского интерфейса, не может обновить содержимое объекта Button , созданного в потоке пользовательского интерфейса. Чтобы фоновый поток мог получить доступ к свойству Content объекта Button , фоновый поток должен делегировать работу, Dispatcher связанную с потоком пользовательского интерфейса. Это достигается с помощью Invoke или BeginInvoke . Invoke является синхронным и BeginInvoke является асинхронным. Операция добавляется в очередь событий объекта в Dispatcher указанном DispatcherPriority .

Если несколько BeginInvoke вызовов выполняются в одной и той же DispatcherPriority последовательности, они будут выполняться в том порядке, в котором были выполнены вызовы.

Если BeginInvoke метод вызывается для объекта Dispatcher , который завершил работу, свойство Status возвращаемого значения DispatcherOperation устанавливается в значение Aborted .

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

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