问题是我需要使用存储过程从sql server获取数据,通常需要10秒以上才能完成。我试图在获取数据时将此任务分配给线程中的thread.with,该表存储在会话变量中以便在其他页面中使用。
Thread thread = new Thread(delegate () {Session["dashboardPatientrecords"]=df.getPatients(); });
thread.Start();
线程工作正常,拉动数据但是转到下一页并尝试访问会话变量,如
var dt=(DataTable)Session["dashboardPatientrecords"];
“dt”设为null
请帮助
谢谢
答案 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;