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