データグリッドに一時ファイルを表示したいので、C# .net WPF アプリケーションでバックグラウンド ワーカーを使用する長期的なプロセスです。
私のコードは
private System.ComponentModel.BackgroundWorker _background = new System.ComponentModel.BackgroundWorker();
private void button1_Click(object sender, RoutedEventArgs e)
{
_background.RunWorkerAsync();
}
public MainWindow()
{
InitializeComponent();
this._background.DoWork += new DoWorkEventHandler(_background_DoWork);
this._background.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(_background_RunWorkerCompleted);
this._background.WorkerReportsProgress = true;
_background.WorkerSupportsCancellation = true;
}
void _background_DoWork(object sender, DoWorkEventArgs e)
{
this.Dispatcher.Invoke((Action)(() =>
{
try
{
FileInfo[] files = new
DirectoryInfo(System.IO.Path.GetTempPath()).GetFiles();
foreach (FileInfo fi in files)
{
if (fi != null)
{
dataGrid1.Items.Add(fi);
}
}
}
catch { }
}));
}
void _background_RunWorkerCompleted(object sen, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
MessageBox.Show("Cancelled");
}
else if (e.Error != null)
{
MessageBox.Show("Exception Thrown");
}
}
すべてのコードが実行されていますが、データグリッドの読み込み中にハングするということは、プログラムの実行中に UI が応答しないことを意味します。
上記の状態でバックグラウンド ワーカーをスムーズに実行するには、どのような変更が必要ですか?
それに加えて、このアプリケーションと共に進行する ProgressBar を追加したい場合は、どうすればよいですか?
ありがとうございました