C/Visual C - Ejecutar un formulario con un mensaje con procesos detrás...C#

 
Vista:
Imágen de perfil de Leopoldo Edgardo

Ejecutar un formulario con un mensaje con procesos detrás...C#

Publicado por Leopoldo Edgardo (3 intervenciones) el 22/04/2018 01:07:10
Hola comunidad. En un formulario tengo un botón guardar. En el método del botón guardar se ejecutan varias consultas a base de datos. Por lo que, dependiendo
de la PC de cada quien, se va a tomar mas o menos tiempo. El primero código del método del botón, muestro un formulario con un label, que dice "guardando..." Y la última línea del mismo método los cierro: ventanaGuardando.Close(); Pero, no se porque,
no me muestra el contenido del label, el label aparece en blanco. Se ejecuta el formulario. Pero en el label, espacio en blanco. Ésto es porque debo usar hilos, o simplemente es algún error pequeño. Gracias Leopoldo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejecutar un formulario con un mensaje con procesos detrás...C#

Publicado por Yamil Bracho (4 intervenciones) el 22/04/2018 01:36:25
Es aconsejable que la soperaciones que toman tiempo las ejecutes en otro hilo diferente al principal (es decir , el de la UI)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leopoldo Edgardo

Ejecutar un formulario con un mensaje con procesos detrás...C#

Publicado por Leopoldo Edgardo (3 intervenciones) el 22/04/2018 03:03:18
Hola Yamil Bracho. Gracias por responder!. Estuve mirando algo de hilos. No es algo que maneje por el momento, aunque tampoco es muy difícil. Podrías darme un ejemplo específico? En código?
Mira. Tengo algo así.

1
2
3
4
5
6
7
8
9
10
11
12
private void BtnGuardar_Click(object sender, EventArgs e)
{
    //Message box que diga esta guardando...
    VentanaAviso.Show();
 
    ..............................................
    ............................................................
    .........................................................
 
    //Cerrando ventana emergente
    VentanaAviso.Close();
}

En el medio realizo varias consultas a base de datos. No se exactamente el tiempo que tarda en ejecutarse. En máquinas potentes menos tiempo logicamente. Y en máquinas "Lentas" mas tiempo. Por eso había decidido realizarlo de esa manera. Pero creo que no le gusta, es decir, no se si es algo que esté bien implementado. La ventana se abre, y cuando termina se cierra todo correctamente. Es decir, cumple con mi objetivo. El problema es que no me muestra el contenido del label. Aparece en blanco. He probado de mostrar el formulario de otro sitio y funciona y se ve el contenido del label sin problemas. Así que, algo del funcionamiento no le esta gustando por decirlo de alguna manera.
Podrías escribir un código de cómo implementar el hilo. Supongo que entrando en el método del botón guardar, se ejecutaría otro hilo, pero he intentado algo así, sin éxito. Se abre y se cierra casi al instante el formulario. Muchas gracias Leopoldo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leopoldo Edgardo

Ejecutar un formulario con un mensaje con procesos detrás...C#

Publicado por Leopoldo Edgardo (3 intervenciones) el 22/04/2018 19:37:55
Estoy viendo que me equivoqué de Foro. Éste no es el Foro de C#. Sepan disculparme. Si algún moderador puede llevar la publicación a C sharp. Ya que dejo la solución para aquel novato como yo. Se tope en algún momento con algo similar.

Luego de asignarle el valor del Label, hay que poner detrás una llamada a Application.DoEvents(). Con eso redibuja el formulario. Para el que es novato como yo. Si se topa con algo similar.

Ahora bien. Un pedido a aquel programador experimentado. Si me podría decir, de querer realizar este sencillo mensaje que le haga saber al usuario que se esta guardando. Aplicando hilos. Cómo se realiza. Saludos Leopoldo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar