更新したい wpf の StatusBar に TextBox があります。
ListBox にファイルのリストがあります。各ファイルで、たとえばメソッド ProcessFile() を呼び出して何らかの操作を行います。そのため、ファイル処理が完了するたびに、そのファイルの名前を StatusBar テキストに表示したいと考えています。
私はこのようなことを試しました:
private void button_Click(object sender, RoutedEventArgs e)
{
statusBar.Visibility = Visibility.Visible;
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(TimeConsumingMethod), frame);
Dispatcher.PushFrame(frame);
statusBar.Visibility = Visibility.Collapsed;
}
public object TimeConsumingMethod(Object arg)
{
((DispatcherFrame)arg).Continue = false;
foreach (string fileName in destinationFilesList.Items)
{
txtStatus.Text = fileName.ToString();
//Assume that each process takes some time to complete
System.Threading.Thread.Sleep(1000);
}
return null;
}
しかし、StatusBar には最後のファイルの名前しか表示されません。コードの何が問題になっていますか? どうすれば修正できますか?