En la inicialización de una forma (la forma principal), que llama a otro formulario para obtener un montón de a partir de entrada, y luego se transfiere una gran cantidad de información:esperar para conseguir información de una forma emergente
Form3 getup = new Form3();
getup.Show();
example = getup.example;
Sin embargo , Necesito esperar a que se complete esta nueva información de formulario.
Form3 getup = new Form3();
getup.Show();
waitfordone();
example = getup.example;
ATM, He intentado usar while:
Form3 getup = new Form3();
getup.Show();
While(getup.visible=true)Console.WriteLine("waiting");
example = getup.example;
Pero esto provoca un bloqueo ... es decir, que se ejecuta, a continuación, se congela. Sospecho que esto es porque el ciclo while está consumiendo todo el procesamiento. Entonces, traté de crear un nuevo hilo
Form3 getup = new Form3();
Thread t = new Thread(getup.Show());
t.start();
While(getup.visible=false)Console.WriteLine("waiting"); // takes a little bit to open
While(getup.visible=true)Console.WriteLine("waiting"); //waits for close
example = getup.example;
Pero esto también hace que se cuelgue. Quizás por la misma razón. He buscado eventos autoreseteados.
Y he intentado:
AutoResetEvent invisible = new AutoResetEvent(false);
Form3 getup = new Form3();
void setup_invisible(object sender, EventArgs e)
{
if (getup.Visible == false) invisible.Set();
}
public ... {
getup.VisibilityChanged += new EventHandle(setup_Invisible);
getup.show();
invisible.WaitOne();
... }
// and many other variations on this
pero por desgracia, se abre Form3, lo cierra (debido a que el hilo se hace?), Y luego se cuelga en invisible.WaitOne();
Por favor alguien puede explicar cómo hacer esto , leer me está haciendo más confundido.
Duplicado de: http://stackoverflow.com/questions/3222834/block-until-a-form-closes-winforms –