バックグラウンド ワーカーがプロセスを実行した後、フォームの特定のラベルのテキストを変更したいと考えています。
バックグラウンドワーカーを起動するボタンは次のとおりです。
private void btnProcessImages_Click(object sender, EventArgs e)
{
DialogResult processImagesWarnMsg = MessageBox.Show("You're about to process images, are you sure?", "Warning!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (processImagesWarnMsg == DialogResult.Yes)
{
DisableAllButtons();
if (!processImagesWorker.IsBusy)
{
processImagesWorker.RunWorkerAsync();
}
//The problem here is that the below will run BEFORE the worker is complete. Where should I place the below method in my code?
//ResetDirectoryStatistics();
}
}
フォームのラベルのテキストを変更するメソッドは次のとおりです。
private void ResetDirectoryStatistics()
{
lblSelectedDirectory.Text = "N/A";
lblTotalNumberOfFilesInDirectory.Text = "N/A";
lblTotalNumberOfSupportedFilesInDirectory.Text = "N/A";
lblTotalNumberOfUnsupportedFilesInDirectory.Text = "N/A";
lblTotalNumberOfPoliciesInDirectory.Text = "N/A";
}
バックグラウンド ワーカーを処理する場合、ResetDirectoryStatistics メソッドをどこに配置すればよいですか? クロススレッドになるため、バックグラウンドワーカーの「DoWork」メソッドに配置できません。また、processImagesWorker.RunWorkerAsync(); の直後にメソッドを配置すると、RunWorker が完了する前にメソッド自体が実行されます。