ロードにかなりの時間がかかるプログラムを作成しています (5 ~ 30 秒)。ユーザーが何かが行われていることを知るために、マーキー スタイルのプログレス バーで始まるフォームが必要です。
public FrmMain()
{
var loading = new FrmLoading();
loading.Show();
InitializeComponent();
// other start up code here
loading.Close()
}
今、loading
うまくポップアップします。問題は、ラベルとプログレス バーが何も表示されず、ほとんどクラッシュしているように見えることです。を調べましたBackgroundWorker
が、正直なところ、それを機能させる方法を完全には理解していません。次のチュートリアルと例に従ってみました。
しかし、私の頭はそれを把握していません。フォームを適切にロードする他の方法はありますか? 助けてくれてありがとう。
編集
私のBackgroundWorker
試みには、で実行されたすべてのアクションを実行する関数を作成することが含まれていましたFrmMain
。だから、私は持っていました:
public FrmMain()
{
Loading = new FrmLoading();
Loading.Show();
backgroundWorker1.RunWorkerAsync();
}
private void FormLoading()
{
// Initialize and loading elements of the form
InitializeComponent();
}
private void BackgroundWorker1DoWork(object sender, DoWorkEventArgs e)
{
FormLoading();
}
private void BackgroundWorker1RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Loading.Close();
}
しかし、私は乗り続けNullReferenceException
ましたbackgroundWorker1.RunWorkerAsync();