JSON 결과를 반환하는 컨트롤러 동작 메서드가 있습니다. 이 컨트롤러 동작에서 asyc을하고 JSON 결과가 브라우저로 돌아 오기를 기다리지 않고 오래 실행중인 작업을 기다리고 있습니다. 비동기 MVC 컨트롤러 내에서 대기합니다
`public JsonResult GetAjaxResultContent(string id)
{
List<TreeViewItemModel> items = Test();
//use the below long running method to do async and await operation.
CallLongRunningMethod();
//i want this to be returned below and not wait for long running operation to complete
return Json(items, JsonRequestBehavior.AllowGet);
}
private static async void CallLongRunningMethod()
{
string result = await LongRunningMethodAsync("World");
}
private static Task<string> LongRunningMethodAsync(string message)
{
return Task.Run<string>(() => LongRunningMethod(message));
}
private static string LongRunningMethod(string message)
{
for (long i = 1; i < 10000000000; i++)
{
}
return "Hello " + message;
}
`
그러나, 컨트롤러 액션은 장기 실행 방법을 종료 전까지 대기하고 JSON 결과를 반환 -
나는 샘플 코드 아래에 있습니다.
new System.Threading.Thread(() => CallLongRunningMethod()).Start();
을 그리고 새 스레드에 방법을 시작합니다
... 기다리지 않으시겠습니까? 그냥 일을 해고하십시오 ... –
작품! ... 감사합니다 ... – Hrishi
@ 사이먼 헤드 헤드 책임을지지 않습니다. 이것은 설명 된 Nisd에 따라 문제가 발생할 가능성이 있습니다. 클라이언트 자바 스크립트가 수명이 긴 프로세스를 시작하기 위해 또 다른 요청을 보낸다면 그것은 훨씬 더 좋을 것입니다. IIS <= 7.5는 실행중인 모든 스레드에 대한 요청을 요구하고 경고없이 요청없이 작업을 종료합니다. – Aron