Przy inicjalizacji formularza (formularz główny), wywołuje inną formę, aby uzyskać kilka począwszy wejściowe, a następnie przenosi wiele informacji:Czekaj uzyskać informacje z formularza podręcznego
Form3 getup = new Form3();
getup.Show();
example = getup.example;
jednak , Muszę poczekać na zakończenie tej nowej informacji o formularzu.
Form3 getup = new Form3();
getup.Show();
waitfordone();
example = getup.example;
ATM, próbowałem za pomocą podczas wypowiedzi:
Form3 getup = new Form3();
getup.Show();
While(getup.visible=true)Console.WriteLine("waiting");
example = getup.example;
Ale powoduje to hang ... to znaczy, że działa, a następnie zamarza. Podejrzewam, że to dlatego, że pętla while pobiera całe przetwarzanie. Tak więc próbowałem utworzyć nowy wątek, ale powoduje to również zawieszenie. Być może z tego samego powodu. Zajrzałem do autoresetevents.
Próbowałem:
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
ale niestety, otwiera form3, zamyka go (ponieważ wątek jest zrobione?), A następnie zawiesza w invisible.WaitOne();
Może ktoś proszę wyjaśnić, jak to zrobić , czytanie tylko sprawia, że jestem bardziej zdezorientowany.
Duplikat: http://stackoverflow.com/questions/3222834/block-until-a-form-close-winforms –