フォーム (メイン フォーム) の初期化時に、別のフォームを呼び出して一連の開始入力を取得し、多くの情報を転送します。
Form3 getup = new Form3();
getup.Show();
example = getup.example;
ただし、この新しいフォーム情報が完成するまで待つ必要があります。
Form3 getup = new Form3();
getup.Show();
waitfordone();
example = getup.example;
ATM、while ステートメントを使用してみました:
Form3 getup = new Form3();
getup.Show();
While(getup.visible=true)Console.WriteLine("waiting");
example = getup.example;
しかし、これはハングアップを引き起こします... つまり、実行してからフリーズします。これは、while ループがすべての処理を消費しているためだと思われます。ということで、新スレ立ててみました
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;
しかし、これはハングアップの原因にもなります。おそらく同じ理由で。autoresetevents を調べました。
そして私は試しました:
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
残念ながら、form3 を開き、それを閉じて (スレッドが完了したため?)、ハングします。invisible.WaitOne();
誰かがこれを行う方法を説明してもらえますか、読むことは私をより混乱させるだけです.