フォームの読み込み時に次のことを行う必要があるとします。
void LoadStartupItemsAndDataBlahBlah(object sender, DoWorkEventArgs e)
{
int s = 0;
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 1000; j++)
for (int k = 0; k < 1000; k++)
s++;
MessageBox.Show(s.ToString());
}
フォームロードでこのメソッドを呼び出す場合
private void Form5_Load(object sender, EventArgs e)
{
Stopwatch t = new Stopwatch();
t.Start();
LoadStartupItemsAndDataBlahBlah(null,null);
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
フォームは約5秒(5000ミリ秒)後に実行され、メッセージボックスが表示されます1000000000
ただし、メソッドをバックグラウンドで実行する場合
private void Form5_Load(object sender, EventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(LoadStartupItemsAndDataBlahBlah);
Stopwatch t = new Stopwatch();
t.Start();
bg.RunWorkerAsync();
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
フォームは約0〜1ミリ秒で非常に高速に読み込まれ、5秒でメッセージボックスが到着してその値が表示されます1000000000