1

我有类方法 A 需要使用 N 个计算器对象之一的服务来完成它的工作。

为了让 A 保持愚蠢和快乐,我不会要求它弄清楚它需要使用哪个计算器;一些更高级别的代码将找出 A 应该使用哪个计算器,并将其注入 A。

我遇到的问题是,其中一些计算器只是非 TAP(同步代码)的大块,而其他计算器是标记为“异步”(TAP)的方法

我不知道如何用 TAP 和非 TAP 计算器注入 A。IE,对于 TAP 计算器,似乎我需要做一个“等待”,但对于非 TAP 计算器,我不会。

不知道如何解决这个问题?谢谢

4

1 回答 1

1

通常,如果您尝试迁移到异步模型,我建议您将同步方法包装到 a 中Task<T>并使它们异步。然后,您可以在任何地方使用异步调用。

IE,对于 TAP 计算器,似乎我需要做一个“等待”,但对于非 TAP 计算器,我不会。

这实际上如何实现并不重要。“非 TAP”计算器将返回T,而“TAP”计算器将返回Task<T>。这确实是唯一的区别 - 如果您的方法返回TaskTask<T>,您可能想要使用await. 如果没有,您要么只想使用该值,要么将其包装TaskEx.Run(使其异步),以便您可以使用await.

于 2012-09-04T17:14:44.883 回答