在asp.net中使用带线程的会话

在asp.net中使用带线程的会话,asp.net,multithreading,session,Asp.net,Multithreading,Session,我想在asp.net站点的所有页面中使用会话对象,首先我在会话中保存一个对象,如下所示,这行代码在HttpHandler中 HttpContext.Current.Session["DocumnetInfo"] = doc; 之后,我创建了一个线程来操作这个文档,并将会话作为参数发送给线程,如下所示 HttpContext ctx = HttpContext.Current; Thread t = new Thread(new ThreadSta

我想在asp.net站点的所有页面中使用会话对象,首先我在会话中保存一个对象,如下所示,这行代码在HttpHandler中

HttpContext.Current.Session["DocumnetInfo"] = doc;
之后,我创建了一个线程来操作这个文档,并将会话作为参数发送给线程,如下所示

            HttpContext ctx = HttpContext.Current;
            Thread t = new Thread(new ThreadStart(() =>
            {
               // HttpContext.Current = ctx;
                SomeMethod(ctx);
            }));
            t.Start();
在某种程度上,我阅读了以下内容:

private void SomeMethod ( HttpContext  ctx)
{

    DocResultsBLL doc = (DocResultsBLL)ctx.Session["DocumnetInfo"];
    // Here is the logic of the manipulation
    // then save the doc in the session back
    ctx.Session["DocumnetInfo"]=doc;
    Response.Redirect("ResultsPage.aspx");
}
问题是我无法在结果页中阅读会话。。HttpContext.Current为空。 1-如何处理会话,将其发送到线程,然后将其返回到线程外。 2-除了会话之外,还有其他更好的场景吗?
3-如果客户端关闭了浏览器,我如何停止线程?

您唯一能做的就是传递http上下文。请查看以下链接,您将了解为什么在多线程应用程序中无法使用会话


还有其他解决方案吗@Jalpesh VadgamaI不这样认为,它将允许您唯一能做的事情是在方法的参数中传递当前上下文。我在页面和业务层之间这样做了,但如果我打开另一个页面呢?我需要会话,或者在数据库中存储数据。我不想在数据库中存储数据。因此,我需要可靠的解决方案来取代会话,谢谢@Jalpesh Vadgama