2014-12-29 7 views
1

나는이 코드 줄이 있습니다HttpClient를 비동기 포스트 C#

HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent); 

는 그러나, 나는라는 오류가 값 : '기다린다'연산자은 비동기 방식 내에서 사용할 수 있습니다. 이 메소드를 'async'수정 자로 표시하고 리턴 유형을 'Task'로 변경하십시오.

은 그래서 검색을 가서이 링크를 발견 : 나는 대답은 무엇을 시도했습니다 Troubleshooting HTTPClient asynchronous POST and reading results

을,하지만 난 여전히 오류가 발생합니다. 어떻게해야합니까? 감사합니다 백만

+0

'async-await'에 대해 배우려면 [my'async-await'curation] (http://curah.microsoft.com/45553/asyncawait-general)의 기사를 읽으십시오. –

답변

6

당신은 async으로 await 전화를 포함하는 방법을 장식하고 Task<TResult>에 보답 종류의 포장해야합니다. 예를 들어, MVC에서 ControllerIndex() 활동에서 호출 된 경우, 당신은 수정해야 할 것 :

public ActionResult Index() 
{ 
    HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent); 
    //will give you the error you are getting 
} 

를가된다 ..so :

public async Task<ActionResult> Index() 
{ 
    HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent); 
    //no error here 
} 

async (C# Reference) 살펴에 되세요 MSDN.

의미있는 값이 반환되지 않을 때 Task을 반환하는 경우도 있고 반환 유형을 필요로하는 이벤트 처리기를 정의하는 데 주로 사용되는 void을 반환하는 경우도 있습니다.

가능한 모든 반환 유형이 async 인 경우 MSDN에서 Async Return Types (C# and Visual Basic)을 확인하십시오.

이러한 작업을 수행하려면 프로젝트에서 System.Threading.Tasks을 참조해야합니다.

+1

UI 스레드가 프로세스가 완료 될 때까지 기다릴 때 가장 잘 작동하므로 Task (void 경우)를 반환하지 않는 것이 좋습니다. ASP.NET 응용 프로그램의 경우 제대로 작동하지 않을 수 있습니다. –

관련 문제