Foros del Web » Programación para mayores de 30 ;) » Programación General »

C#: Llamadas seguras desde subprocesos a controles de formulario

Estas en el tema de C#: Llamadas seguras desde subprocesos a controles de formulario en el foro de Programación General en Foros del Web. Hola, Tengo una duda, acerca de la típica excepción: "Se ha tenido acceso al control ‘tal’ desde un subproceso distinto en el que se ha ...
  #1 (permalink)  
Antiguo 02/07/2007, 18:25
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 19 años, 4 meses
Puntos: 5
C#: Llamadas seguras desde subprocesos a controles de formulario

Hola,

Tengo una duda, acerca de la típica excepción:

"Se ha tenido acceso al control ‘tal’ desde un subproceso distinto en el que se ha creado."

En la página de soporte de MSDN, se explica con un ejemplo como solucionar esta excepción, aquel ejemplo (que de hecho funciona) se basa en la colocación de un texto en un TextBox, así:

Código:
delegate void SetTextCallback(string text);

private Thread demoThread = null;

private void cmd_colocar_texto_forma_segura_clic(object sender, EventArgs e)
{
    this.demoThread = new Thread(new ThreadStart(this.ThreadProcSafe));
    this.demoThread.Start();
}

private void ThreadProcSafe()
{
    this.colocar_texto("Texto aplicado de forma segura");
}

private void colocar_texto(string text)
{
    /* Checa por InvokeRequired */
    if (this.txt_ejemplo.InvokeRequired)
        {    
            SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
           }
        else
        {
            /* InvokeRequired false, se coloca el texto normalmente */
        this.txt_ejemplo.Text = text;
        }
}

Pero que pasa si lo que se quiere no es modificar una propiedad Text de un control, sino invocar un método de este. Digamos que tengo un botón llamado cmd_accion y quiero realizar una llamada segura a su método
PerformClick(), ¿que cosas tendria que cambiar al ejemplo de arriba?

Ojala alguien me pueda dar una breve explicacion sobre eso, pues todavia no lo capto .


Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.