【发布时间】:2018-05-25 08:59:51
【问题描述】:
我想从 Windows 服务调用 webAPI 方法,我不需要说调用是异步的。如果我确实以异步方式处理此调用,我将不得不在我的调用链上一直传播异步,我不想这样做。相反,我希望同步调用该方法。
无论我在哪里看到的答案都是通过您的代码全部异步(我不想要或不需要这个)或使用described here 周围的工作。我认为会有一种更简洁的方法来简单地从 Windows 服务调用 webAPI 方法,而无需执行这些选项中的任何一个。是我遗漏了什么还是事情就是这样?
我从阅读其他帖子和那篇文章中知道,执行以下代码很糟糕并且可能会死锁,但我想现在除了使用 hack 之外,还有更好的方法来“修复”这个问题。最新的 .NET 版本中是否添加了当前首选方法?
public void Send(MeasurementProcessResults measurementResult)
{
var response = httpClient.PostAsJsonAsync("api/notification", measurementResult).Result;
if(response.IsSuccessStatusCode)
{
//Do some stuff here
}
else
{
//throw an exception.
}
}
【问题讨论】:
-
您是否熟悉如何装饰异步方法并使用
await并拥有Task,您应该查看如何创建异步方法以及如何以及在何处使用它们..跨度> -
@MethodMan 阅读他的整个帖子。您的评论忽略了他对同步解决方案的明确要求,并且不希望将他的方法装饰为
async -
那么他不应该使用异步调用..
-
如果不使用 HttpClient 会怎样?
-
WebClient 有同步方法
标签: c# .net asynchronous asp.net-web-api2