ASP.NET MVC 4 Async Kontrolör Geri arama
açıklandığı gibi sadece MVC 4 yeni zaman uyumsuz Kontrolör özelliklerini kullanıyorum
ilerlemeyi bildiren bir tür durum çubuğu. Async özelliklerinde buna yardımcı olacak bir şey var mı?
DÜZENLEME: Ben denemek ve bunu nasıl bir bıçak alıp daha iyi yollar
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>
Evet, zaten böyle bir şey yapmak ama aynı mesajı 10 saniye boyunca ise insanların sistem asılı düşünüyorum. – Craig
Eh, uygun gelmediğini biliyorum, ancak bazen ilerlemenin "yanılsaması" kullanıcıların ihtiyaç duyduğu şeydir. Örneğin, görevinizin ortalama 15 sn sürdüğünü biliyorsanız, js kullanarak o süre boyunca bir ilerleme çubuğunu otomatikleştirin. Kullanıcıyı kandırmak gibi gözükebileceğini biliyorum, ancak gerçekten bir yerde, bir veritabanı gibi kısmi ilerlemeyi saklamanın ve kesin ilerleme için istemci tarafı yoklama işleminizin gerçekten çok fazla uğraştığı bazı durumlar var. –
SignalR'ı düşünmemiştim, muhtemelen işe yarayacaktı. – Craig