2016-09-27 1 views
0

TaskHttpResponseMessage 형식을 HttpResponseMessage 형식으로 반환 할 수있는 방법이 있습니까? 아래 코드를 참조하십시오.작업 <HttpResponseMessage> 반환 형식을 HttpResponseMessage 형식으로 반환 할 수있는 방법은 무엇입니까?

private HttpResponseMessage Process(string receiver,HttpRequestMessage request) 
     { 
       Reciever test = new Reciever(); 
       Task<HttpResponseMessage> res= test.ReceiveAsync(receiver, request); 
       return res;  
     } 

사실 내 ReceiveAsync 방법은 비동기 유형 내가 비동기 유형으로 프로세스를 방법 돼요.

이것에 대한 아이디어가 있으십니까?

감사합니다. 이 작업을 할 수

+3

당신이 정답을 지배 한 때 (* "내가 해달라고 프로세스 메서드가 비동기 형식이되기를 원합니다. "*) 실제로 이것이 적절한 수정이 아닌 이유를 정당화해야합니다. – spender

+0

당신이 단지 res.Result를 할 수 있다고 주장한다면 그것은 나쁜 습관으로 간주됩니다. 가능한 경우 await/async를 "항상 중지"하는 것이 좋습니다. – EJoshuaS

+0

spender 님의 의견에 덧붙이면 수행중인 기본 작업이 비동기 작업이어야하는 이유는 무엇입니까? 동기 코드를 원한다면 괜찮아 지겠지만 동기식으로 만들어야합니다. – Servy

답변

-1

나는 생각한다

편집 : 그것은 교착하므로,이 작업을 수행하지 마십시오 - 감사 @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; 
} 
+0

ProcessAsync.Result를 사용하는 대신 비동기/대기 모드를 "사용하는"것이 좋습니다. 나는 OP가 이것 같이 무언가를 요구 했었다는 것을 가정한다. – EJoshuaS

+0

나는 비동기와 완전히 동의한다/모든 방법을 기다린다. 나는 이런 식으로하지 않을 것이지만, 그가 요구하는 것이고 그것은 효과가있을 것이다. –

+0

이 코드는 동기화 컨텍스트가있을 때마다 교착 상태가됩니다. – Servy

관련 문제