Dispatcher.BeginInvoke Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Ejecuta un delegado de forma asincrónica en el subproceso al que Dispatcher está asociado.
Sobrecargas
| Nombre | Description |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados en el subproceso en el que se creó .Dispatcher |
| BeginInvoke(DispatcherPriority, Delegate) |
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada en el subproceso al que Dispatcher está asociado. |
| BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados, en la prioridad especificada, en el subproceso en el que se creó el Dispatcher objeto . |
| BeginInvoke(DispatcherPriority, Delegate, Object) |
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada y con el argumento especificado en el subproceso al que Dispatcher está asociado. |
| BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada y con la matriz de argumentos especificada en el subproceso al que Dispatcher está asociado. |
Comentarios
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad Content de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
BeginInvoke devuelve un DispatcherOperation objeto que se puede usar para interactuar con el delegado cuando el delegado está en la cola de eventos.
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
Si se realizan varias BeginInvoke llamadas al mismo DispatcherPriority, se ejecutarán en el orden en que se realizaron las llamadas.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.
BeginInvoke(Delegate, Object[])
Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados en el subproceso en el que se creó .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
Parámetros
- method
- Delegate
Delegado a un método que toma los parámetros especificados en , que se insertan en argsla cola de Dispatcher eventos.
- args
- Object[]
Matriz de objetos que se van a pasar como argumentos al método especificado. Puede ser null.
Devoluciones
Objeto , que se devuelve inmediatamente después BeginInvoke de llamar a , que se puede usar para interactuar con el delegado, ya que está pendiente de ejecución en la cola de eventos.
Comentarios
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad Content de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.
Se aplica a
BeginInvoke(DispatcherPriority, Delegate)
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada en el subproceso al que Dispatcher está asociado.
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
Parámetros
- priority
- DispatcherPriority
Prioridad, relativa a las otras operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- method
- Delegate
Delegado a un método que no toma ningún argumento, que se inserta en la cola de Dispatcher eventos.
Devoluciones
Objeto , que se devuelve inmediatamente después BeginInvoke de llamar a , que se puede usar para interactuar con el delegado, ya que está pendiente de ejecución en la cola de eventos.
- Atributos
Excepciones
method es null.
priority no es un valor válido DispatcherPriority.
Ejemplos
En el ejemplo siguiente se muestra cómo colocar una operación en .Dispatcher Para obtener el código fuente completo de este ejemplo, consulte Single-Threaded Aplicación con Long-Running Ejemplo de cálculo.
En primer lugar, se crea un delegado que no acepta ningún argumento.
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
A continuación, BeginInvoke(DispatcherPriority, Delegate) se llama a . Dado que cada DispatcherObject tiene una propiedad que devuelve el Dispatcher objeto al que está asociado, el deseado Dispatcher se obtiene consultando DispatcherObject, en este caso, un Button denominado startStopButton. La llamada a BeginInvoke(DispatcherPriority, Delegate) toma dos parámetros: la prioridad, que se establece DispatcherPriority.Normalen y la devolución de llamada, que se pasa a través de una instancia del delegado NextPrimeDelegate.
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
Comentarios
Si se realizan varias BeginInvoke llamadas al mismo DispatcherPriority, se ejecutarán en el orden en que se realizaron las llamadas.
BeginInvoke devuelve un DispatcherOperation objeto que se puede usar para interactuar con el delegado cuando el delegado está en la cola de eventos.
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad Content de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.
Consulte también
Se aplica a
BeginInvoke(Delegate, DispatcherPriority, Object[])
Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados, en la prioridad especificada, en el subproceso en el que se creó el Dispatcher objeto .
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
Parámetros
- method
- Delegate
Delegado a un método que toma los parámetros especificados en , que se insertan en argsla cola de Dispatcher eventos.
- priority
- DispatcherPriority
Prioridad, relativa a las otras operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- args
- Object[]
Matriz de objetos que se van a pasar como argumentos al método especificado. Puede ser null.
Devoluciones
Objeto , que se devuelve inmediatamente después BeginInvoke de llamar a , que se puede usar para interactuar con el delegado, ya que está pendiente de ejecución en la cola de eventos.
Comentarios
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad Content de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.
Se aplica a
BeginInvoke(DispatcherPriority, Delegate, Object)
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada y con el argumento especificado en el subproceso al que Dispatcher está asociado.
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
Parámetros
- priority
- DispatcherPriority
Prioridad, relativa a las otras operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- method
- Delegate
Delegado a un método que toma un argumento, que se inserta en la cola de Dispatcher eventos.
- arg
- Object
Objeto que se va a pasar como argumento al método especificado.
Devoluciones
Objeto , que se devuelve inmediatamente después BeginInvoke de llamar a , que se puede usar para interactuar con el delegado, ya que está pendiente de ejecución en la cola de eventos.
- Atributos
Excepciones
method es null.
priority no es un valor válido DispatcherPriority.
Ejemplos
En el ejemplo siguiente se muestra cómo colocar una operación en .Dispatcher
En primer lugar, se crea un delegado que acepta un argumento, en este caso una cadena.
private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)
A continuación, BeginInvoke(DispatcherPriority, Delegate, Object) se llama a . Dado que cada DispatcherObject tiene una propiedad que devuelve el Dispatcher objeto al que está asociado, el deseado Dispatcher se obtiene consultando DispatcherObject, en este caso, un Grid denominado tomorrowsWeather. La llamada a BeginInvoke(DispatcherPriority, Delegate, Object) toma tres parámetros: la prioridad, que se establece DispatcherPriority.Normalen ; la devolución de llamada, que se pasa a través de una instancia del delegado OneArgDelegate; y una cadena denominada weather, que es el argumento de la devolución de llamada.
// 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)
Comentarios
arg puede ser null si no se necesita ningún argumento.
BeginInvoke devuelve un DispatcherOperation objeto que se puede usar para interactuar con el delegado cuando el delegado está en la cola de eventos.
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad de contenido de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
Si se realizan varias BeginInvoke llamadas al mismo DispatcherPriority, se ejecutarán en el orden en que se realizaron las llamadas.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.
Consulte también
Se aplica a
BeginInvoke(DispatcherPriority, Delegate, Object, Object[])
Ejecuta el delegado especificado de forma asincrónica en la prioridad especificada y con la matriz de argumentos especificada en el subproceso al que Dispatcher está asociado.
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
Parámetros
- priority
- DispatcherPriority
Prioridad, relativa a las otras operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- method
- Delegate
Delegado a un método que toma varios argumentos, que se insertan en la cola de Dispatcher eventos.
- arg
- Object
Objeto que se va a pasar como argumento al método especificado.
- args
- Object[]
Matriz de objetos que se van a pasar como argumentos al método especificado.
Devoluciones
Objeto , que se devuelve inmediatamente después BeginInvoke de llamar a , que se puede usar para interactuar con el delegado, ya que está pendiente de ejecución en la Dispatcher cola.
- Atributos
Excepciones
method es null.
DispatcherPriority no es una prioridad válida.
Comentarios
El arg parámetro puede ser null si no se necesitan argumentos.
BeginInvoke devuelve un DispatcherOperation objeto que se puede usar para interactuar con el delegado cuando el delegado está en la cola de eventos.
El DispatcherOperation objeto devuelto por BeginInvoke se puede usar de varias maneras para interactuar con el delegado especificado, como:
Cambiar el DispatcherPriority valor del delegado a medida que está pendiente de ejecución en la cola de eventos.
Quitar el delegado de la cola de eventos.
Esperando a que el delegado vuelva.
Obtener el valor que devuelve el delegado después de ejecutarlo.
BeginInvoke es asincrónico; por lo tanto, el control vuelve inmediatamente al objeto que realiza la llamada después de llamar a .
En WPF, solo el subproceso que creó un DispatcherObject puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desconecta del subproceso principal de la interfaz de usuario no puede actualizar el contenido de un Button que se creó en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano acceda a la propiedad Content de Button, el subproceso en segundo plano debe delegar el trabajo en el Dispatcher asociado al subproceso de la interfaz de usuario. Esto se logra mediante Invoke o BeginInvoke. Invoke es sincrónico y BeginInvoke es asincrónico. La operación se agrega a la cola de eventos de en Dispatcher el especificado DispatcherPriority.
Si se realizan varias BeginInvoke llamadas al mismo DispatcherPriority, se ejecutarán en el orden en que se realizaron las llamadas.
Si BeginInvoke se llama a en un Dispatcher que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece en Aborted.