비동기 컨트롤러에서 비동기 작업을하려고합니다. 내가해야 할 일은보기에서 버튼을 누르면 작업 완료를 알리는 경고 메시지가 나타납니다. 작업이 끝나면 뭔가 할 수 있습니다 (예를 들어 json을 반환하거나 다른보기로 리디렉션). 여기 내 코드입니다 :MVC의 비동기 작업이 작동하지 않습니다.
서버 측 :
public void DoWork()
{
var a = MakeADelay();
}
public async Task<ActionResult> MakeADelay()
{
await Task.Delay(5000);
return RedirectToAction("UploadComplete");
}
public ActionResult UploadComplete()
{
return View();
}
이 내 클라이언트 측 코드 :이 코드는 모두가 예상대로 실행 보이지만 실행하면
$("#btnAsync").click(function() {
$.ajax({
url: '/Upload/DoWork',
type: "post",
success: function() {
alert("Work in Progress!!");
}
});
});
때 서버 측 코드 문 return RedirectToAction("UploadComplete");
에 도달하면 아무것도하지 않습니다! 나는 그것이 다른 스레드 또는 뭔가에서 실행되는 것 같아요.
무엇이 문제입니까?
두 번째 질문은 동기화 작업이 실제로 의미하는 것입니다. 나는 진술이 완전 해지기를 기다리는 나의 행동을 결코 원하지 않는다. 항상 작업을 실행 대기열로 보내고 클라이언트로 돌아가는 작업을 원하고 작업이 완료되면 클라이언트에게 어떤 방식 으로든 알릴 수 있습니다. 어쨌든 클라이언트에게 어떻게 알릴 수 있습니까? SignalR 또는 무엇인가?
UploadComplete() 작업에 대한보기가 있습니까? redirecttoactino가 아무것도하지 않는다는 것을 어떻게 말하고 있습니까? – ckv
물론 리디렉션 설명문에 해당하는보기가 있습니다. 하지만 실행되면 리디렉션이 발생하지 않습니다! 너는 이걸 시험해보고 너에게 달렸는지 알려주지. 사실 내 UploadComplete() 메소드는 결코 실행되지 않습니다. 중단 점은 절대로 안타. – Pouyan
죄송합니다. 나는 asyc 기다리는 부분에 익숙하지 않습니다. 그래서 나는 너에게 도움이되지 않을지도 모른다. – ckv