これは私がこれまでに試したことです:
button.Visible = false
フォームの初期化子に入れbutton.Visible = true
て、backgroundWorkersのDoWorkイベントの最後に置きます。
これにより、BackgroundWorkerが作業を行った後、プログラムがフリーズします。
理由がわかりません。フォームの初期化子
button.Visible = false
に入れbutton.Visible = true
て、呼び出しの後に入れbackgroundWorker1.RunWorkerAsync()
ます。
BackgroundWorkerが作業を開始した直後にボタンが表示されるため、これは正しく機能しません。
私はこれがなぜ起こっているのか理解しています。- フォームのイニシャライザー
button.Visible = false
にdoneEvent = new AutoResetEvent(false)
入れdoneEvent.WaitOne()
てbutton.Visible = true
から、backgroundWorker1.RunWorkerAsync()
呼び出しの後に入れます。
このように、フォームにあるProgressBarが正しく機能しなくなることを除いて、すべてが正常に機能します(すべての作業が完了するまで進行状況は表示されません)。
なぜこれが起こっているのか直感的に理解できるかもしれませんが、私はそれを本当に理解しておらず、それを解決する方法もわかりません。