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 asincrónicamente un delegado en el subproceso al que está asociado el objeto Dispatcher.
Sobrecargas
BeginInvoke(Delegate, Object[]) |
Ejecuta de forma asincrónica el delegado especificado con los argumentos especificados en el subproceso en el que se creó el objeto Dispatcher. |
BeginInvoke(DispatcherPriority, Delegate) |
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto Dispatcher. |
BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Ejecuta de forma asincrónica el delegado especificado, con la prioridad indicada y los argumentos especificados, en el subproceso en el que se creó el objeto Dispatcher. |
BeginInvoke(DispatcherPriority, Delegate, Object) |
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con el argumento especificado en el subproceso al que está asociado el objeto Dispatcher. |
BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con la matriz de argumentos indicada en el subproceso al que está asociado el objeto Dispatcher. |
Comentarios
En WPF, solo el subproceso que creó un DispatcherObject objeto puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desactive del subproceso de interfaz de usuario principal no puede actualizar el contenido de un Button objeto creado en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano tenga acceso 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 que se devuelva el delegado.
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 objeto que se ha apagado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .
BeginInvoke(Delegate, Object[])
Ejecuta de forma asincrónica el delegado especificado con los argumentos especificados en el subproceso en el que se creó el objeto 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 de un método que toma los parámetros especificados en args
, que se inserta en la cola de eventos de Dispatcher.
- args
- Object[]
Matriz de objetos cuyos valores se pasan como argumentos al método especificado. Puede ser null
.
Devoluciones
Objeto, que se devuelve inmediatamente después de llamar a BeginInvoke, que se puede usar para interactuar con el delegado ya que su ejecución está pendiente 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 que se devuelva el delegado.
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 objeto puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desactive del subproceso de interfaz de usuario principal no puede actualizar el contenido de un Button objeto creado en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano tenga acceso 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 objeto que se ha apagado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .
Se aplica a
BeginInvoke(DispatcherPriority, Delegate)
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada en el subproceso al que está asociado el objeto 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
Parámetros
- priority
- DispatcherPriority
Prioridad, relativa a las demás operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- method
- Delegate
El delegado a un método que no toma ningún argumento, que se inserta en la cola de eventos de Dispatcher.
Devoluciones
Objeto, que se devuelve inmediatamente después de llamar a BeginInvoke, que se puede usar para interactuar con el delegado ya que su ejecución está pendiente en la cola de eventos.
- Atributos
Excepciones
method
es null
.
priority
no es un DispatcherPriority válido.
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, vea Aplicación de subproceso único 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 que se devuelva el delegado.
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 objeto puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desactive del subproceso de interfaz de usuario principal no puede actualizar el contenido de un Button objeto creado en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano tenga acceso 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 objeto que se ha apagado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .
Consulte también
Se aplica a
BeginInvoke(Delegate, DispatcherPriority, Object[])
Ejecuta de forma asincrónica el delegado especificado, con la prioridad indicada y los argumentos especificados, en el subproceso en el que se creó el objeto 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
Parámetros
- method
- Delegate
Delegado de un método que toma los parámetros especificados en args
, que se inserta en la cola de eventos de Dispatcher.
- priority
- DispatcherPriority
Prioridad, relativa a las demás operaciones pendientes de la Dispatcher cola de eventos, con las que se invoca el método especificado.
- args
- Object[]
Matriz de objetos cuyos valores se pasan como argumentos al método especificado. Puede ser null
.
Devoluciones
Objeto, que se devuelve inmediatamente después de llamar a BeginInvoke, que se puede usar para interactuar con el delegado ya que su ejecución está pendiente 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 que se devuelva el delegado.
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 objeto puede tener acceso a ese objeto. Por ejemplo, un subproceso en segundo plano que se desactive del subproceso de interfaz de usuario principal no puede actualizar el contenido de un Button objeto creado en el subproceso de la interfaz de usuario. Para que el subproceso en segundo plano tenga acceso a la propiedad Content 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 BeginInvoke se llama a en un Dispatcher objeto que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .
Se aplica a
BeginInvoke(DispatcherPriority, Delegate, Object)
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con el argumento especificado en el subproceso al que está asociado el objeto 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
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 eventos de Dispatcher.
- arg
- Object
Objeto que se va a pasar como argumento al método especificado.
Devoluciones
Objeto, que se devuelve inmediatamente después de llamar a BeginInvoke, que se puede usar para interactuar con el delegado ya que su ejecución está pendiente en la cola de eventos.
- Atributos
Excepciones
method
es null
.
priority
no es un DispatcherPriority válido.
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 Dispatcher el objeto al que está asociado, se obtiene el deseado Dispatcher 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 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 llamarlo.
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 tenga acceso 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 objeto que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .
Consulte también
Se aplica a
BeginInvoke(DispatcherPriority, Delegate, Object, Object[])
Ejecuta asincrónicamente el delegado especificado en la prioridad indicada y con la matriz de argumentos indicada en el subproceso al que está asociado el objeto 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
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 de un método que toma varios argumentos y se inserta en la cola de eventos de Dispatcher.
- arg
- Object
Objeto que se va a pasar como argumento al método especificado.
- args
- Object[]
Matriz de objetos cuyos valores se pasan como argumentos al método especificado.
Devoluciones
Objeto, que se devuelve inmediatamente después de llamar a BeginInvoke, que se puede usar para interactuar con el delegado ya que su ejecución está pendiente en la cola de Dispatcher.
- 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 llamarlo.
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 tenga acceso a la propiedad Content 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 objeto que se ha cerrado, la propiedad status del devuelto DispatcherOperation se establece Aborteden .