ファイルを移動します
foreach(file){
file.move(file,dst);}
各ファイルが移動された後 (異なるパーティション)、進行状況に関する情報でフォームを更新したいと考えています。残念ながら、私の WPF フォームは、コピー/移動キュー全体でビジーです。ファイルの移動中 (または移動後) に GUI の応答性を確保するにはどうすればよいですか?
ファイルを移動します
foreach(file){
file.move(file,dst);}
各ファイルが移動された後 (異なるパーティション)、進行状況に関する情報でフォームを更新したいと考えています。残念ながら、私の WPF フォームは、コピー/移動キュー全体でビジーです。ファイルの移動中 (または移動後) に GUI の応答性を確保するにはどうすればよいですか?
Kasan さん、BackgroundWorker が役に立つと思います。タスクは良い方法ですが、タスクから UI の進行状況を更新するには、イベントを UI スレッドにディスパッチする必要があります。そうしないと、UI 以外のスレッドから UI を更新することが許可されていないため、例外が発生します。ここにサンプルとドキュメントへのリンクがあります
public partial class MainWindow : Window
{
BackgroundWorker _worker = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
_worker = new BackgroundWorker();
_worker.DoWork += worker_DoWork;
_worker.ProgressChanged += worker_ProgressChanged;
}
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progress1.Value = e.ProgressPercentage;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
_worker.RunWorkerAsync();
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
var files = new List<string>();
foreach(var file in files)
{
File.Move(file, /*target*/);
_worker.ReportProgress(/* here is progress from 0 to 100 */)
}
}
}