异步,执行简单但耗时的操作

时间:2011-03-06 02:58:31

标签: c# wpf

我正在做一个必须扫描文件夹和文件的WPF应用程序,如你所知,即使不是很多,也需要一些时间来迭代许多文件夹。显然,您不希望让应用程序用户等待,无法执行任何其他操作(或者只是因此UI不会冻结)。我应该从哪里开始学习如何异步执行文件夹扫描?如果可能的话,简单的参考!

度过美好的一天!

3 个答案:

答案 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)

显示使用Here is a nice article

BackgroundWorker,包括将UI调用重新发送回UI线程。