我尝试在我的MVC3应用程序中实现长轮询。
以下代码可以正常工作:当线程休眠时,我可以重新加载页面而没有问题。
[AsyncTimeout(30 * 1002)]
public void TestAsync()
{
AsyncManager.OutstandingOperations.Increment();
var queued = ThreadPool.QueueUserWorkItem(new WaitCallback(parm =>
{
var wait = new AutoResetEvent(false);
wait.WaitOne(TimeSpan.FromSeconds(30));
AsyncManager.OutstandingOperations.Decrement();
}));
}
//--------------------------------------------------------------------------------
public ActionResult TestCompleted()
{
return Json(null);
}
//--------------------------------------------------------------------------------
但是如果我在应用程序中使用Sessions,比如...
this.Session["XXX"] = "Test";
当线程正在运行时,我无法重新加载页面。页面会等待线程准备就绪,然后刷新页面。
我该如何解决这个问题?