ここで説明されているように、MVC4の新しい非同期コントローラー機能を使用していますhttp://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4
実行に10〜20秒かかる可能性のあるアクションがある場合は、進行状況をユーザーに通知するための何らかのステータスバーを提供したいと思います。非同期機能にはこれを助ける何かがありますか?
編集:私はそれをどのように試みて実行するかを突き刺し、より良い方法があるかどうかを確認します
public async Task<ActionResult> GizmosAsync()
{
return View("Gizmos", await GetGizmosAsync());
}
private void GetGizmosAsync()
{
for(int i=0; i<10; i++)
{
lock(_locker)
{
_statusMessage = String.Format("{0} of 10", i);
}
DoSomethingLongRunning();
}
}
public ActionResult Status()
{
return Json(new { Status = _statusMessage });
}
static readonly object _locker = new object();
static string _statusMessage = "";
....
<script>
setTimeout(displayStatus, 1000);
function displayStatus() {
$.post("/controller/status", function(data) {
alert(data.Status);
});
}
</script>