웹 요청을 사용하여 다른 부분 (텍스트, HTML 및 제목)을받는 전자 메일이 있습니다. 나는 시간을 줄이기 위해 동시에 프로그램을 얻길 바란다. 나는 달성하고자하는 것의 아래에 단순화 된 버전을 작성했다.비동기/응답 대기 시스템이 응답 대기 중
public static async Task<MailMessage> GetEmailMessage(string subjectUrl, string bodyUrl)
{
var mailMessage = new MailMessage();
var subjectTask = new HttpClient().GetStringAsync(subjectUrl);
var bodyTask = new HttpClient().GetStringAsync(bodyUrl);
mailMessage.Subject = await subjectTask;
mailMessage.Body = await bodyTask;
return mailMessage;
}
제목과 본문에 대한 프로그램을 사용하고 싶습니다. 일단 둘 다 가지고 있으면 MailMessage를 반환하십시오.
나는이 비동기식을 처음 접했고, 어떤 도움을 주시면 감사하겠습니다.
========= 해결 ========= 나에게 문제가 제 기능 아니었다 실현하기위한 @SLaks에
그래서 감사합니다. 내가 전화를하는 방식이었다. 밝혀 지, 내 경우에는 (나는 값 유형이 아닌 참조 유형을 반환한다고 생각합니다.) 실제로는 대기를 수행하기 전에 작업 <>. 결과를 호출해야했습니다.
즉 : 이것은 하지 완료 될 때까지 기다린 것입니다 :
var mailMessage = GetEmailMessage("urlhere", "http://www.google.com");
그러나 이것은 (이하 "결과"에 주목한다이 요구되고 :이 게시물을 희망
var mailMessage = GetEmailMessage("urlhere", "http://www.google.com").Result;
은과 다른 사람을 도움 동일한 문제가 발생합니다. 해피 코딩
비동기 작업 결과를 동 기적으로 기다리고 있습니다. 이것은 거의 좋은 생각이 아닙니다. 대신 호출하는 메소드를 async와 aswait로 비동기 연산으로 만들어야한다. – SLaks