【发布时间】:2015-03-06 14:22:42
【问题描述】:
我有一个 WPF 客户端,它使用提供异步 API 支持的外部库,但在使用所述异步方法(例如实体实现、解析等)。使用异步方法有什么好处,因为我希望 CPU 绑定在另一个线程上工作?不使用 Task.Run() 调用这些方法会导致一些动画抖动,因为 CPU 绑定的工作仍在消息循环中的调度程序上发生,但如果 API 提供异步支持,我更喜欢使用它而不是同步代码。
我认为有使用异步 API 的好处如果它可以重用Task.Run() 提供的我的线程池线程。我认为这是 ASP.NET 中 async/await 的主要好处之一,所以我假设线程池线程的重用对客户端也是一个好处。
更新
更新了问题以陈述斯蒂芬指出的 CPU 绑定工作。我可以看到通过我的服务使用外部库的异步 API 的另一个优势,即使我将它包装在 ViewModel 中的 Task.Run() 中。也就是说,我的服务的任何其他调用者都将免费获得异步,而无需当时更改实现或制作单独的服务。
【问题讨论】:
-
对于反对者,是因为我没有添加代码还是因为您认为这个问题不合适?我不明白要否决一个诚实的问题。
标签: c# .net multithreading asynchronous async-await