CSPromex
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Programadores dedicados a C sharp .Net, eres nuevo, experto o quieres aprender a programar en C Sharp, aquí encontraras todo lo que necesitas.
 
ÍndiceBuscarÚltimas imágenesChatRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
» Sockets Conexion,Envio y recepcion de datos (mini-chat Cliente-Servidor)
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeSáb Sep 30, 2023 6:24 pm por EurekaMartin

» Graficos: Grafica circular
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeMar Mar 05, 2019 4:58 pm por Luis Garcia

» Calendario hecho Manualmente
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeMar Mar 05, 2019 3:52 pm por Luis Garcia

» Activar el protector de pantalla.
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeMar Mar 05, 2019 3:12 pm por Luis Garcia

» Hacer backup de MySql desde C#
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeMar Abr 18, 2017 10:04 pm por maurifl

» Sockets programa para Ciber Cafe (Cliente-Servidor)
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeLun Ago 10, 2015 5:45 pm por artes

» Ayuda crear emoticones en un chat
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeDom Jul 12, 2015 9:00 pm por yeco96

» Necesito ayuda para pasar datos a un Datagridview
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeDom Jun 07, 2015 4:33 pm por rafaelfa

» Reproductor de música->Lista de reproducción (Guardar-Cargar)
Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeLun Jun 01, 2015 3:00 pm por kevin22

Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Síguenos:
Crear foro Crear foro Crear foro

 

 Acceso a un control desde un subproceso utilizando delegados.

Ir abajo 
3 participantes
AutorMensaje
Guillermo Javier Salazar
STAFF TEAM
STAFF TEAM
Guillermo Javier Salazar


Mensajes : 181
Puntos : 349
Localización : México
Comentarios : El azar favorece a una mente preparada.

Acceso a un control desde un subproceso utilizando delegados. Empty
MensajeTema: Acceso a un control desde un subproceso utilizando delegados.   Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeVie Mar 11, 2011 10:09 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:

Código:
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.

Código:
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
https://cspromex.activo.mx
xcyber-dj
Novato
xcyber-dj


Mensajes : 1
Puntos : 1

Acceso a un control desde un subproceso utilizando delegados. Empty
MensajeTema: Re: Acceso a un control desde un subproceso utilizando delegados.   Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeVie Mar 25, 2011 2:04 pm

YO QUIERO HAVER ALGO SIMILAR, LA VERDD ES QUE SOY NUEVO EN ESTO DE C SHARP, MI PROBLEMA ES QUE TENGO UN PROYECTO DE TRES FORMS, EN LA PRIMERA REALIZO UNA SERIE DE OPERACIONES Y EL RESULTADO LO GUARDO EN UNA VARIABLE, PERO ESA VARIABLE DESPUES LO QUIERO UTILIZAR EN EL FORM 3, PERO COMO LE HAGO?....

ESPERO QUE PUEDAN MOSTRARME UNA SOLUCION... Y SI SE PUEDE Y SI NO ES MUCHO PEDIR, UN EJEMPLO DE ELLO... GRACIAS
Volver arriba Ir abajo
Guillermo Javier Salazar
STAFF TEAM
STAFF TEAM
Guillermo Javier Salazar


Mensajes : 181
Puntos : 349
Localización : México
Comentarios : El azar favorece a una mente preparada.

Acceso a un control desde un subproceso utilizando delegados. Empty
MensajeTema: Re: Acceso a un control desde un subproceso utilizando delegados.   Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeVie Mar 25, 2011 3:21 pm

Saludos xcyber-dj, pues lo que quieres hacer no es dificil, solamente mandas las variables al constructor del siguiente form, en cuanto pueda subo un ejemplo.

Y este no es el lugar para que expongas una duda ajena al código que puse, para ello tenemos la sección de "foro de ayuda", hay puedes exponer cualquier duda que tengas, como esta.

Por tal motivo en un par de dias borrare estos 2 comentarios, y en cuanto pueda pondré un ejemplo de lo que necesitas, saludos!!.
Volver arriba Ir abajo
https://cspromex.activo.mx
JPUM
Principiante
JPUM


Mensajes : 6
Puntos : 6

Acceso a un control desde un subproceso utilizando delegados. Empty
MensajeTema: Re: Acceso a un control desde un subproceso utilizando delegados.   Acceso a un control desde un subproceso utilizando delegados. I_icon_minitimeMiér Mayo 01, 2013 9:43 am

Gracias es justo lo que buscaba si me funcionó muchas gracias.......
Volver arriba Ir abajo
Contenido patrocinado





Acceso a un control desde un subproceso utilizando delegados. Empty
MensajeTema: Re: Acceso a un control desde un subproceso utilizando delegados.   Acceso a un control desde un subproceso utilizando delegados. I_icon_minitime

Volver arriba Ir abajo
 
Acceso a un control desde un subproceso utilizando delegados.
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Delegados.
» Mover un control con el mouse.
» Proyecto: Cámara web utilizando API's
» Hacer backup de MySql desde C#
» Comandos de acceso rapido (metodos abreviados del teclado) C#

Permisos de este foro:No puedes responder a temas en este foro.
CSPromex :: PROGRAMACIÓN EN C# :: Código abierto-
Cambiar a: