我正在做一个必须扫描文件夹和文件的WPF应用程序,如你所知,即使不是很多,也需要一些时间来迭代许多文件夹。显然,您不希望让应用程序用户等待,无法执行任何其他操作(或者只是因此UI不会冻结)。我应该从哪里开始学习如何异步执行文件夹扫描?如果可能的话,简单的参考!
度过美好的一天!
答案 0 :(得分:2)
.NET framekwork的线程功能上的MSDN页面可能是good place to start。
答案 1 :(得分:2)
最简单的选择可能是使用BackgroundWorker。这将自动允许您将“工作”推送到后台,并将进度和完成报告回WPF线程,而无需通过Dispatcher手动同步。
另一种选择是通过具有延续的任务来使用TPL。例如,当您启动方法时,您可以执行以下操作:
// Disable your UI...
// Start your "work"
var task = Task.Factory.StartNew( () =>
{
// Do your processing here...
});
task.ContinueWith( t =>
{
// Report results and re-enable UI here...
}, TaskScheduler.FromCurrentSynchronizationContext());
答案 2 :(得分:1)
BackgroundWorker,包括将UI调用重新发送回UI线程。