Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步,执行简单但耗时的操作_C#_Wpf - Fatal编程技术网

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

C# 异步,执行简单但耗时的操作,c#,wpf,C#,Wpf,我正在做一个WPF应用程序,它必须扫描文件夹和文件,正如您所知,即使不太多,也需要一些时间来迭代许多文件夹。显然,您不想让应用程序用户等待,不能执行任何其他操作(或者只是为了让UI不冻结)。我应该从哪里开始学习如何异步执行文件夹扫描?如果可能,一个简单的参考 祝你今天愉快 可能.NET framekwork的线程功能上的MSDN页面是一个。最简单的选择可能是使用。这将自动允许您将“工作”推送到后台,并向WPF线程报告进度和完成情况,而无需通过调度程序手动同步 另一种选择是通过具有延续性的任务使用

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


祝你今天愉快

可能.NET framekwork的线程功能上的MSDN页面是一个。最简单的选择可能是使用。这将自动允许您将“工作”推送到后台,并向WPF线程报告进度和完成情况,而无需通过调度程序手动同步

另一种选择是通过具有延续性的任务使用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());
这显示了如何使用,包括将UI调用分派回UI线程