C# 我们如何返回任务<;HttpResponseMessage>;返回类型为HttpResponseMessage类型?

C# 我们如何返回任务<;HttpResponseMessage>;返回类型为HttpResponseMessage类型?,c#,asp.net-web-api,C#,Asp.net Web Api,有没有一种方法可以将TaskHttpResponseMessage类型返回到HttpResponseMessage类型?下面是代码 private HttpResponseMessage Process(string receiver,HttpRequestMessage request) { Reciever test = new Reciever(); Task<HttpResponseMessage> r

有没有一种方法可以将TaskHttpResponseMessage类型返回到HttpResponseMessage类型?下面是代码

  private HttpResponseMessage Process(string receiver,HttpRequestMessage request)
       {
              Reciever test = new Reciever();
              Task<HttpResponseMessage> res= test.ReceiveAsync(receiver, request);
               return res;      
        }
私有HttpResponseMessage进程(字符串接收器、HttpRequestMessage请求)
{
接收器测试=新接收器();
Task res=test.ReceiveAsync(接收方,请求);
返回res;
}
实际上,我的ReceiveAsync方法是async类型,我不希望Process方法是async类型

有什么想法吗


谢谢

我想这可能行得通:

编辑:不要这样做,因为它会死锁-谢谢@Servy

private HttpResponseMessage Process(string receiver, HttpRequestMessage request)
{
    return ProcessAsync(receiver, request).Result;
}

private async Task<HttpResponseMessage> ProcessAsync(string receiver, HttpRequestMessage request)
{
    Reciever test = new Reciever();
    var  res = await test.ReceiveAsync(receiver, request);
    return res;
}
私有HttpResponseMessage进程(字符串接收器、HttpRequestMessage请求)
{
返回ProcessAsync(receiver,request).Result;
}
专用异步任务ProcessAsync(字符串接收器、HttpRequestMessage请求)
{
接收器测试=新接收器();
var res=等待测试.ReceiveAsync(接收器,请求);
返回res;
}

当您排除了正确答案(“我不希望流程方法是异步类型的”)时,您确实需要证明为什么这不是一个合适的解决方案,如果您坚持您可以只执行res.Result,但这被认为是一种不好的做法。Microsoft建议尽可能使用await/async“一路向下”。要添加到spender的评论中,为什么您正在执行的底层工作需要是异步操作?如果您想要同步代码,这很好,但要使其始终同步。最好使用async/await“一路向下”,而不是使用ProcessAsync.Result。我想OP确实要求这样的东西……我完全同意async/Wait的说法。我绝不会这样做,但这正是他所要求的,它会起作用。只要有同步上下文,这段代码就会死锁。@PawOrmstrupMadsen,除非在大多数情况下它都不起作用。这会使事情变得更好吗?返回ProcessAsync(receiver,request).ConfigureAwait(false).GetAwaiter().GetResult();我以前从未尝试过这种方法,可能是因为我不做很多同步工作,