나는 아래와 같은 새로운 웹 응용 프로그램의 테스트 코드 작성이 :왜 비동기 메서드를 호출 할 때 주 스레드가 즉시 응답을 반환하지 않습니까?
2017년 11월 15일 19 : 55 : 여기
public ActionResult Index()
{
Logger.Write("start Index,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
MyMethodAsync(System.Web.HttpContext.Current.Request);//no await and has warning
Logger.Write("end Index,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
return View();
}
private async Task MyMethodAsync(HttpRequest request)
{
Logger.Write("start MyMethodAsync,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
await SomeMethodAsync(request);
Logger.Write("end MyMethodAsync,threadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
}
그리고 로그 인 31.904 시작 인덱스, threadId : 35
2017년 11월 15일 19 : 55 : 31.919 단부 색인 threadId : 35
2017년 11월 15일 19 : 55 31.919 시작 MyMethodAsync는 threadId 35
2017년 11월 15일 19 : 55 : 53.324 end MyMethodAsync, threadId : 46
클라이언트 브라우저는 약 2017-11-15 19:55:32에 응답을 받고 내 이해와 일치합니다. 실제 프로젝트 프로덕션 환경에서는 위와 같은 로그를 기록하지만 클라이언트 브라우저는 약 22 초 후 2017-11-15 19:55:54에 응답을 수신했습니다. 주 스레드조차도 작업을 완료 한 것으로 보입니다. 주 스레드는 새 스레드가 작업을 완료 할 때까지 응답을 반환하지 않습니다.
나는이 문제를 serveral 일 디버그했습니다. 제발 도와 주실 수 있나요?
Paulo Morgado. 감사합니다. 네가 한 말 알아. 하지만 differenct 솔루션의 동일한 코드가 응답 시간이 다른 이유는 무엇입니까? –