【发布时间】:2012-08-01 11:47:42
【问题描述】:
我尝试在我的 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);
}
//--------------------------------------------------------------------------------
但如果我在应用程序中使用会话,例如 ..
this.Session["XXX"] = "Test";
线程正在运行时,我无法重新加载页面。页面等待线程准备就绪,然后页面将刷新。
我该如何解决这个问题?
【问题讨论】:
-
如果你这样做是因为你想了解长轮询..太棒了..如果不是..使用 SignalR..这是一个不需要重新发明轮子的领域是现有的良好支持的解决方案。哦,如果您正在学习长轮询,您可能应该花一些时间在 SignalR 源代码中。
标签: asp.net-mvc asp.net-mvc-3 session long-polling