【发布时间】:2017-03-22 08:40:49
【问题描述】:
我想知道在 c# 中执行后台任务的最佳做法是什么?
例如,在我的应用程序中,我有一个 save() 函数,当我执行这个函数时,我想在后台运行另一个任务 - 在我的例子中,使用谷歌地图地理编码器将地址转换为 lat/lng .
【问题讨论】:
-
你听说过任务对象吗?
-
google for BackgroundWorker、Task、async/await
-
@PJvG,并行编程与 OP 的问题无关。 OP 希望在不阻塞 UI 的情况下访问外部资源。为此,
async-await是 .NET 中的最佳方法。它不会创建新线程,也不会使用其他内核来处理数据。 -
@PJvG,你可以使用基于任务的异步编程,但在某种程度上会浪费资源/线程。因为“后台”线程什么都不做——只等待响应。这就是为什么
async-await可以被认为是处理外部资源的好方法。 -
我会使用 Microsoft 的反应式框架 (NuGet System.Reactive)。它比 TPL 或迄今为止提出的任何其他选项强大得多。
标签: c# background-process