Control.BeginInvoke Método

Definición

Ejecuta un delegado de forma asincrónica en el subproceso donde se creó el identificador subyacente del control.

Sobrecargas

BeginInvoke(Delegate, Object[])

Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados en el subproceso donde se creó el identificador subyacente del control.

BeginInvoke(Action)

Ejecuta el delegado especificado de forma asincrónica en el subproceso donde se creó el identificador subyacente del control.

BeginInvoke(Delegate)

Ejecuta el delegado especificado de forma asincrónica en el subproceso donde se creó el identificador subyacente del control.

BeginInvoke(Delegate, Object[])

Ejecuta el delegado especificado de forma asincrónica con los argumentos especificados en el subproceso donde se creó el identificador subyacente del control.

C#
public IAsyncResult BeginInvoke (Delegate method, object[] args);
C#
public IAsyncResult BeginInvoke (Delegate method, params object[] args);

Parámetros

method
Delegate

Delegado de un método que obtiene los parámetros del mismo número y tipo que los incluidos en el parámetro args.

args
Object[]

Matriz de objetos cuyos valores se pasan como argumentos al método especificado. Puede ser null si no se necesita ningún argumento.

Devoluciones

IAsyncResult

Una IAsyncResult que representa el resultado de la operación BeginInvoke(Delegate).

Implementaciones

Excepciones

No se puede encontrar ningún identificador de ventana adecuado.

Ejemplos

En el ejemplo de código siguiente se muestra un uso del BeginInvoke método .

C#
public delegate void MyDelegate(Label myControl, string myArg2);

private void Button_Click(object sender, EventArgs e)
{
   object[] myArray = new object[2];

   myArray[0] = new Label();
   myArray[1] = "Enter a Value";
   myTextBox.BeginInvoke(new MyDelegate(DelegateMethod), myArray);
}

public void DelegateMethod(Label myControl, string myCaption)
{
   myControl.Location = new Point(16,16);
   myControl.Size = new Size(80, 25);
   myControl.Text = myCaption;
   this.Controls.Add(myControl);
}

Comentarios

El delegado se llama de forma asincrónica y este método devuelve inmediatamente. Puede llamar a este método desde cualquier subproceso, incluso el subproceso que posee el identificador del control. Si el identificador del control aún no existe, este método busca en la cadena primaria del control hasta que encuentre un control o formulario que tenga un identificador de ventana. Si no se encuentra ningún identificador adecuado, BeginInvoke se producirá una excepción. Las excepciones dentro del método delegado se consideran sintrar y se enviarán al controlador de excepciones sintrar de la aplicación.

Puede llamar EndInvoke a para recuperar el valor devuelto del delegado, si es necesario, pero esto no es necesario. EndInvoke se bloqueará hasta que se pueda recuperar el valor devuelto.

Nota

La mayoría de los métodos de un control solo se pueden llamar desde el subproceso donde se creó el control. Además de la InvokeRequired propiedad , hay cuatro métodos en un control que son seguros para subprocesos: Invoke, BeginInvoke, EndInvokey CreateGraphics si el identificador del control ya se ha creado. Llamar CreateGraphics a antes de que se haya creado el identificador del control en un subproceso en segundo plano puede provocar llamadas entre subprocesos no válidas. Para todas las demás llamadas de método, debe usar uno de los métodos de invocación para serializar la llamada al subproceso del control. Los métodos invoke siempre invocan sus devoluciones de llamada en el subproceso del control.

Nota

Se podría producir una excepción si el subproceso que debe procesar el mensaje ya no está activo.

Consulte también

Se aplica a

.NET Framework 4.8 y otras versiones
Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

BeginInvoke(Action)

Ejecuta el delegado especificado de forma asincrónica en el subproceso donde se creó el identificador subyacente del control.

C#
public IAsyncResult BeginInvoke (Action method);

Parámetros

method
Action

Delegado de un método que no toma parámetros.

Devoluciones

IAsyncResult

Una IAsyncResult que representa el resultado de la operación BeginInvoke(Action).

Se aplica a

Windows Desktop 7 y Windows Desktop 6
Producto Versiones
Windows Desktop 6, 7

BeginInvoke(Delegate)

Ejecuta el delegado especificado de forma asincrónica en el subproceso donde se creó el identificador subyacente del control.

C#
public IAsyncResult BeginInvoke (Delegate method);

Parámetros

method
Delegate

Delegado de un método que no toma parámetros.

Devoluciones

IAsyncResult

Una IAsyncResult que representa el resultado de la operación BeginInvoke(Delegate).

Excepciones

No se puede encontrar ningún identificador de ventana adecuado.

Ejemplos

En el ejemplo de código siguiente se muestra un uso del BeginInvoke método .

C#
public delegate void InvokeDelegate();

private void Invoke_Click(object sender, EventArgs e)
{
   myTextBox.BeginInvoke(new InvokeDelegate(InvokeMethod));
}
public void InvokeMethod()
{
   myTextBox.Text = "Executed the given delegate";
}

Comentarios

El delegado se llama de forma asincrónica y este método devuelve inmediatamente. Puede llamar a este método desde cualquier subproceso, incluso el subproceso que posee el identificador del control. Si el identificador del control aún no existe, este método busca en la cadena primaria del control hasta que encuentre un control o formulario que tenga un identificador de ventana. Si no se encuentra ningún identificador adecuado, BeginInvoke se producirá una excepción. Las excepciones dentro del método delegado se consideran sintrar y se enviarán al controlador de excepciones sintrar de la aplicación.

Puede llamar EndInvoke a para recuperar el valor devuelto del delegado, si es necesario, pero esto no es necesario. EndInvoke se bloqueará hasta que se pueda recuperar el valor devuelto.

Nota

La mayoría de los métodos de un control solo se pueden llamar desde el subproceso donde se creó el control. Además de la InvokeRequired propiedad , hay cuatro métodos en un control que son seguros para subprocesos: Invoke, BeginInvoke, EndInvokey CreateGraphics si el identificador del control ya se ha creado. Llamar CreateGraphics a antes de que se haya creado el identificador del control en un subproceso en segundo plano puede provocar llamadas entre subprocesos no válidas. Para todas las demás llamadas de método, debe usar uno de los métodos de invocación para serializar la llamada al subproceso del control. Los métodos invoke siempre invocan sus devoluciones de llamada en el subproceso del control.

Nota

Se podría producir una excepción si el subproceso que debe procesar el mensaje ya no está activo.

Consulte también

Se aplica a

.NET Framework 4.8 y otras versiones
Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7