【问题标题】:create a asynchronous function using async await and return a regular object使用 async await 创建一个异步函数并返回一个常规对象
【发布时间】:2013-10-26 03:30:45
【问题描述】:

我正在尝试构建一个 sdk 包装器,它将进行所有需要进行的相关 http 调用,但为使用它的开发人员消除复杂性,因此我正在尝试构建一个返回常规的函数对象,但在该函数中,我想要调用和异步并等待 httpclient 或 webclient,但我不知道该怎么做?

我所能看到的只是有一个不好的 void 函数,或者有一个 Task 或 Task 但那也不好。

我希望用户将函数定义为正常,即

 MyClss myobject = company.sdk.RequestData("http://....");

这不可能吗?我相信如果你使用.Result,它会将调用变成同步调用,这是不好的。

有什么建议或解决方案吗?也许我看错了?

【问题讨论】:

  • 如果您要将当前的代码库迁移到此.. 做其他人(包括微软)所做的事情。创建单独的 XXXAsync 异步执行的方法。您的问题的答案是“否”。你不能让他们将他们的类定义为正常的,并希望它像 async/await 组合一样。

标签: c# webclient async-await dotnet-httpclient


【解决方案1】:

我希望用户将函数定义为正常,即 MyClss myobject = company.sdk.RequestData("http://....");

“正常”的定义正在改变。在新世界中,异步方法被异步调用(即通过await)是正常

你刚才说的是你希望用户能够同步调用你的异步方法。这是不正常的。

正如 Simon 评论的那样,正确的解决方案是为异步方法提供异步 API。只需关注TAP;所有 .NET 开发人员迟早都需要学习它。

【讨论】:

  • 感谢“点击”链接。解释得非常清楚,很有道理。
猜你喜欢
  • 2021-06-06
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
  • 2017-09-09
  • 2020-06-06
  • 2013-02-27
相关资源
最近更新 更多