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

Como hago esto?

Estas en el tema de Como hago esto? en el foro de .NET en Foros del Web. Hola Se que el titulo del foro no dice mucho pero no tenia alguna idea clara para colocarle, Quiero hacer esto, pero no me funciona: ...
  #1 (permalink)  
Antiguo 17/12/2006, 20:04
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Metodo en segundo plano o Asincronico

Hola

Se que el titulo del foro no dice mucho pero no tenia alguna idea clara para colocarle, Quiero hacer esto, pero no me funciona:

1. Una aplicacion que trabaja con una base de datos en MySQL en un servidor externo.
Lo primero que se ejecuta es un splash que muestra informacion sobre la aplicacion y comprueba que si haya conexion con el mismo. Este splash tiene un timer que cambiar la imagen de un picture, para dar la impresion que se esta relizando la comprobacion de la conexion.

2. El código lo tengo en el load, pero el problema es que los objetos del formulario no se hacen visibles hasta que el proceso de conexion termina.

¿Como hago para que el formulario siga su proceso de carga sin esperar que termine el proceso de conexion?

El código que tengo este este:
Cita:
//Timer que cambia las imagenes
tmrConexion.Enabled = true;
con = new MySqlConnection();
try
{
string strConx = cifrado.Decifrar(File.ReadAllText(Ruta), "XXXX-XXX");
con.ConnectionString = strConx;
con.Open();
//MessageBox.Show("ok");
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
Codigo del timer
Cita:
switch (NumeroImagen)
{
case 0:
ptbSignal.Image = Katalogo.Properties.Resources.Signal;
NumeroImagen++;
break;
case 1:
ptbSignal.Image = Katalogo.Properties.Resources.Signal_1;
NumeroImagen++;
break;
case 2:
ptbSignal.Image = Katalogo.Properties.Resources.Signal_2;
NumeroImagen++;
break;
case 3:
ptbSignal.Image = Katalogo.Properties.Resources.Signal_3;
NumeroImagen++;
break;
case 4:
ptbSignal.Image = Katalogo.Properties.Resources.Signal_4;
NumeroImagen++;
break;
case 5:
ptbSignal.Image = Katalogo.Properties.Resources.Signal_5;
NumeroImagen=0;
break;
}
Gracias
:Saludos:
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)

Última edición por jhonwilliams; 19/12/2006 a las 11:12 Razón: Cambie el titulo por uno mas acorde al tema.
  #2 (permalink)  
Antiguo 18/12/2006, 09:34
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Como hago esto?

que tal jhon, hay una herramienta que se llama backgroundWorker que ejecuta procesos asincronos en un segundo plano de una aplicacion, el componente o control se encuentra en la ficha de componentes del cuadro de herramientas del vs2005, espero que te funcione, te dejo estos dos links (L1)(L2), saludos
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 19/12/2006, 11:13
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Como hago esto?

Si señor, BackgroundWorker fue la solucion a todos mis dolores de cabeza, gracias por el dato, funciono a la perfeccion

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #4 (permalink)  
Antiguo 19/12/2006, 15:09
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Como hago esto?

ya vas, yo lo intente usar pero nada,
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 19/12/2006, 15:21
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Como hago esto?

El BackgroundWorker tiene un evento DoWork, en este event coloque lo que necesito ejecutar asincronicamente y en el load del formulario lo invoque asi backgroundWorker1.RunWorkerAsync(); y eso fue todo, ahora el formulario se ejecuta tal y como lo necestio

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #6 (permalink)  
Antiguo 20/12/2006, 09:24
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Como hago esto?

El problema esta en que yo valido, cuando presiono ENTER en el evento keydown de un textbox, tengo que colocar una etiqueta que diga "ESPERESE" o algo parecido y que a su vez me ejecute un proceso de un porgrama en C++, pero como todo se encuentra en el mismo evento se tienen que ejecutar las lineas y despues ejecuta el dowork del background, lo estaba haciendo con un Thread.Sleep(x) pero nada de nada no me pone la etiqueta, y es que quiero hacer eso para que el usuario no desespere y me cierre la aplicacion, la cual me causaria conflictos.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #7 (permalink)  
Antiguo 24/12/2006, 23:35
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Como hago esto?

Ahora si e llegado al nudo, desde un metodo asincronico no e podido alcanzar ni objetos en este caso un label o cerrar el formulario splash ya que estos se encuentran en un hilo diferente, ¿Alguna idea? que puedo hacer para alcanzar o cerrar formulario lanzados por otro hilo

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)

Última edición por jhonwilliams; 24/12/2006 a las 23:40
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 20:33.