ファイルからロードする膨大な量のデータと Windows フォーム コントロールがあり、ファイル サイズが非常に大きい場合は、プログレス バーを使用する必要があります。
プログレスバーは機能しますが、プログラムがデータを構築してフォームにロードし始めるとすぐにフリーズします。
それで、とにかく私はそれを機能させることができますか?プログレスバーと一緒にバックグラウンドワーカーを使用しています。
ここにいくつかのコードがあります:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
listBox2.Items.Clear();
listBox3.Items.Clear();
dataGridView1.RowCount = 0;
progressBar1.Visible = true;
reading.Visible = true;
backgroundWorker1.RunWorkerAsync();
setLabels();
progressBar1.Visible = false;
reading.Visible = false;
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
// Wait 100 milliseconds.
Thread.Sleep(100);
// Report progress.
backgroundWorker1.ReportProgress(i);
}
}
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
// Change the value of the ProgressBar to the BackgroundWorker progress.
progressBar1.Value = e.ProgressPercentage;
// Set the text.
reading.Text += " at " + e.ProgressPercentage.ToString() + "%";
}