Бөлісу құралы:


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 является асинхронным; Таким образом, элемент управления немедленно возвращается вызывающему объекту после вызова.

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

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

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

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

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

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

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

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

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 завершения работы, свойству Abortedсостояния возвращаемого DispatcherOperation значения присваивается значение .

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

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

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

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 завершении работы, свойству состояния возвращаемого 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 если аргументы не требуются.

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

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

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

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

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

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

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

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

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

Если 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[]

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

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

DispatcherOperation

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

Атрибуты

Исключения

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

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

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

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