PortalÍndiceFAQBuscarMiembrosGrupos de UsuariosChateaRegistrarseConectarse
Gracias a todos los que nos apoyan y nunca nos escriben Smile ...
Y a los que si también!!....
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Temas similares
Mejores posteadores
Diego (55)
 
Jexi (49)
 
Martello (49)
 
chn666 (30)
 
Serekos (11)
 
yunier_722 (7)
 
luysk8 (7)
 
Angelillo (5)
 
xulinho (4)
 
José Carlos (4)
 
Últimos temas
» No logro introducir un Int en una matriz de byte
Lun Jul 03, 2017 2:42 pm por hksq2

» Drivers de Audio de mi Tarjeta desaparecen al conectar tarjeta de audio externa
Jue Oct 24, 2013 4:19 pm por DjCarlosMix

» BIENVENID...
Miér Feb 27, 2013 5:36 pm por ale

» INSERTAR TOTAL VENDIDO DURANTE EL DIA
Vie Oct 28, 2011 12:16 am por Jexi

» ALGUIEN ME PUEDE AYUDAR CON ESTE PROGRAMA EN C¿?
Miér Oct 26, 2011 8:35 pm por krojas

» contador del 00 al 99 con debug
Lun Abr 25, 2011 8:47 pm por ayon1969

» Libreria de audio para C# .NET
Jue Feb 24, 2011 12:37 pm por Tzero

» hola ... me ayudan porfavor Simulacion
Sáb Nov 13, 2010 8:23 pm por Jexi

» Windows XP , pasara a la segunda decada..??
Vie Ago 13, 2010 7:30 pm por Diego

Visitantes

casino Contador encuestas

Comparte | 
 

 Acceso a un control desde un subproceso utilizando delegados.

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Martello
EQUIPO STAFF
EQUIPO STAFF
avatar

Soy : Masculino
Mensajes : 49
Coeficiente Intelectual : 114
Llegué el : 01/05/2010
Edad : 29
Localización : México
¿En que estas pensando? : Accesible

MensajeTema: Acceso a un control desde un subproceso utilizando delegados.   Mar Mayo 11, 2010 11:59 pm

Acceso a un control desde un subproceso utilizando delegados.

Un delegado es un tipo especial de clase cuyos objetos pueden almacenar referencias a uno o más métodos de tal manera que a través del objeto sea posible solicitar la ejecución de los métodos.
Cuando se está ejecutando la aplicación y un subproceso distinto al que ha creado un control intenta llamar a ese control, el depurador provoca un "InvalidOperationException" con el mensaje: "Operación no válida a través de subprocesos: Se tuvo acceso al control (nombre de control) desde un subproceso distinto a aquel en que lo creó". Parecerá algo raro e inusual, pero sera algo que verán con frecuencia:
--------------------------------------------
using System;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Thread hilo;

public Form1()
{
InitializeComponent();
}

public void Sumar() {
label1.Text = "C# programadores ";
}

private void button1_Click(object sender, EventArgs e)
{
hilo = new Thread(new ThreadStart(Sumar));
hilo.Start();
}
}
}
--------------------------------------------
En el código anterior intentamos llamar a la propiedad "text" de la etiqueta "label1", desde un Thread, el código se ve bastante limpio y claro, y al ejecutarlo no nos marcara error, pero al dar click sobre el boton se genera la excepcion antes mencionada, para corregir esto utilizaremos un Delegado.
Creamos un método en cual ponemos la llamada a nuestro control (dividi el mensaje para que vean el como usarlo con parametros) y crearemos un delegado con las mismas características de dicho método, luego crearemos un objeto de nuestro delegado y haremos referencia de nuestro método, invocamos el método en el subproceso que ha creado el control y le pasamos parámetros.
--------------------------------------------
using System;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{

public partial class Form1 : Form
{

Thread hilo;
delegate void MyDelegado(string text);

public Form1()
{
InitializeComponent();
}

public void Sumar() {
MyDelegado MD = new MyDelegado(Mostrar);
this.Invoke(MD, new object[] {"Mexico"});
}

public void Mostrar(string text)
{
label1.Text = "C# programadores " + text;
}

private void button1_Click(object sender, EventArgs e)
{
hilo = new Thread(new ThreadStart(Sumar));
hilo.Start();
}
}
}
-------------------------------------------
Ya con esto, podemos manipular los controles desde un subproceso. Los delegados son piezas claves en .Net, ya que son útiles para muchas cosas, aunque también tienden a ser un poco enredados.
Volver arriba Ir abajo
Ver perfil de usuario http://www.facebook.com/group.php?gid=381514445922&a
 
Acceso a un control desde un subproceso utilizando delegados.
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» Acceso de invitados y desde buscadores en foro privado
» ¿Cómo crear un widget de acceso rápido desde el que se pueda acceder a las secciones del foro?
» Ayuda con control de acceso..!!!! para estacionamiento publico
» Problema: no sé cómo acceder desde el AIRIS al resto de equipos de mi red doméstica
» Como se tiene control de los ip? para saber por ejemplo desde ese ip con cuantas cuentas se ha registrado alguien?

Permisos de este foro:No puedes responder a temas en este foro.
DEBUGGERS :: LENGUAJES DE PROGRAMACION :: C# :: Codigo Abierto-
Cambiar a: