【问题标题】:ServiceStack Service Calling Async MethodsServiceStack 服务调用异步方法
【发布时间】:2014-02-02 15:55:53
【问题描述】:

我有一个 ServiceStack 服务。现在在 servicestack 服务方法中,我需要从异步实现的组件中调用方法

async Task GetDataAsync();

由于无法将 ServiceStack 方法标记为 async,我想知道调用此方法的最佳方法是什么。

return GetDataAsync().Result;

从我的角度来看会有味道。

最好的做法是什么?

【问题讨论】:

    标签: c# asynchronous servicestack async-await


    【解决方案1】:

    您可以使用异步标记 ServiceStack 方法,但您需要升级到版本 4。

    【讨论】:

    • 是的,第 4 版虽然仍然是开源的,但在商业上可用于非开源项目,所以它会花费一些钱,除非你的项目是操作系统,在这种情况下派对: )
    • 正确的版本 4 直接支持异步。 github.com/ServiceStack/ServiceStack/wiki/…
    • 谢谢。没看到v4发布了
    • 嗯,从技术上讲,我认为@mythz 仍将其称为测试版,但它已经上市一段时间了。
    【解决方案2】:

    如果您想要一个未标记为async 但需要调用async 方法的方法,那么可以使用以下模式

    return GetDataAsync().Result;
    

    但是,这确实意味着该方法现在将阻塞调用者,而不是在请求的资源可用时让任务自行完成。这是否可以解决为什么您的服务堆栈中的方法不能标记为async 的核心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多