Esperar a la finalizacion de un formulario VS

oFF-sIDE

Hola gente, estoy acabando un trabajo pero tengo un problema bastante importante que no consigo arreglar. Os pongo en situación:

Tengo un ArrayList que paso por referencia a otro formulario que da la opción de borrar o modificar una componente del ArrayList. Despues de eso vacío una ListView donde muestro las componentes del ArrayList y la vuelvo a cargar con las modificaciones pertinentes.

El problema:
Crear el formulario es demasiado lento y ejecuta el vaciado de la ListView y la nueva carga antes de que muestre el formulario de edición de modo que los cambios no se ven reflejados en la ListView anterior.

Os dejo el código y le echais un ojo a ver si podeis echarme una mano porque tengo que entregarlo el dia 14 y aun me queda algo de faena:

private void excursionesToolStripMenuItem_Click(object sender, EventArgs e)
{
FgestionExcursion fExc = new FgestionExcursion(ref excursiones);
fExc.Show();
//las dos siguientes lineas no hacen nada porque se ejecutan antes de iniciar la ventana
vaciarListViewExcursiones();
cargarListViewExcursiones(excursiones);
}

Gracias.

IS4kO

Si lo quieres todo en el mismo hilo de ejecución no te compliques:

Thread.Sleep(milisegundos)

SI quieres optimizar, juega con el pool de hilos:

http://msdn2.microsoft.com/en-us/library/0ka9477y(vs.71).aspx

oFF-sIDE

Usar Threads en C# no lo veo muy normal eh xD

Al menos a mí no me han enseñado nada de hilos en C# aunque si en C++

De momento espero otra opción si es posible aunque tb estoy pensando en crear una variable y pasarla por referencia y dejar el proceso en un bucle hasta que el formulario cambie el valor de esa variable y el anterior salga del bucle... ya veremos.

Khanser

Hazlo con hilos tio, un bucle es muy chapucero. Eso si, acuerdate de hacerte algun semaforo binario para las variables a las que se acceden desde los dos sitios, o el programa te hará cosas raras.

kas

Madre mia..

Dejaros de bules y de threats.

Form form1 = new Form();
...
// tus cosas
...
// Mostrar el formualrio y esperar a que vuelva:
form1.ShowDialog/b

// Esta funcion bloquea el programa hsta que el form1 sea cerrado (destruido).


// Continuar...

Fuente: http://msdn2.microsoft.com/es-es/library/c7ykbedk(vs.80).aspx

oFF-sIDE

Dios santo Kas... es tan simple que ni se me había ocurrido jajaja

Usaba un .Show() por eso de poder mirar en la anterior ventana.

Funciona a la perfección, muchas gracias :)

Soltrac

Iba a postear lo de #5...pero se me ha adelantado.

En realidad me daba verguenza a postearlo, porque pense...si la gente esta hablando de hilos, seguramente no necesita eso.

A veces la respuesta mas simple......xDDDD

kas

Navaja de Occam :)

Usuarios habituales

  • kas
  • Soltrac
  • oFF-sIDE
  • Khanser
  • IS4kO