是否可以在线程中创建会话变量?

时间:2016-05-04 06:32:41

标签: c# asp.net

问题是我需要使用存储过程从sql server获取数据,通常需要10秒以上才能完成。我试图在获取数据时将此任务分配给线程中的thread.with,该表存储在会话变量中以便在其他页面中使用。

Thread thread = new Thread(delegate () {Session["dashboardPatientrecords"]=df.getPatients(); });
thread.Start();

线程工作正常,拉动数据但是转到下一页并尝试访问会话变量,如

var dt=(DataTable)Session["dashboardPatientrecords"];

“dt”设为null

请帮助

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用线程结果填充会话对象。虽然不在线索内。

DataTable dt = null;

var thread = new Thread(() =>
    {
      dt = df.getPatients();
    });

thread.Start();
thread.Join();

Session["dashboardPatientrecords"] = dt;

答案 1 :(得分:1)

使用Cache代替Session。在线程环境中使用会话是不安全的。

答案 2 :(得分:0)

试试这个..

DataTable dt=Session["dashboardPatientrecords"] as DataTable;