我正在使用 .NET 4.5 在 WPF 中编写应用程序。该应用程序允许用户选择多个文件并导入它们。发生这种情况时,应用程序将解析文本文件并将数据存储到数据库中。这些文件可能非常大,所以我希望 UI 保持响应并允许用户在发生这种情况时做其他事情。
我是异步编程的新手,想知道最好的方法是什么?根据微软的一篇文章...
“async 和 await 关键字不会导致创建额外的线程。异步方法不需要多线程,因为异步方法不在其自己的线程上运行。该方法在当前同步上下文上运行并使用线程上的时间仅当该方法处于活动状态时。您可以使用 Task.Run 将 CPU 绑定的工作移至后台线程,但后台线程无助于等待结果可用的进程。
由于我正在处理多个文件,我会更好地为每个文件使用“Task.Run”,因为它们将在单独的线程上运行?如果不是,使用 async/await 在同一个线程上运行所有内容有什么好处?
请注意,没有其他 UI 操作(进度条 - 进度报告除外)真正关心这些文件何时完成处理,因此根据本文,使用 Task.Run 似乎对我有益。你怎么认为?