내 page1.aspx에서 스레드를 사용하여 데이터베이스에서 보고서를 생성하고 있습니다.Asp.net 세션 변수를 스레드에 의해 업데이트가 반영되지 않습니다.
//on button click
Hashtable ht = (Hashtable)Session["ReportParam"];
ReportThreadClass rth = new ReportThreadClass(ht);
Thread thread = new System.Threading.ThreadStart(rth .Run);
thread.Start();
내 스레드 클래스의 럼 메서드에서 Hashtable의 값을 업데이트하여 생성 한 페이지의 수를 지정합니다. 모든 일이 잘 작동 내가 세션에서 업데이트 된 값을 얻고에서 InProc 모드에서 내가 위의 코드를 실행하면 내 Page2.aspx에서
//in thread' method
public virtual void Run()
{
int pagecount=0;
while(done)
{
//loading data from DB and generating html pages
ht["Total_Pages"] = pagecount;
}
}
은 내가
Hashtable ht = (Hashtable)Session["ReportParam"];
int TotalPages = (int) ht["Total_Pages"];
변수 세션에서 값을 읽고 있습니다. 모든 것은 정적 변수에 저장되고 ht는 Session에 의해 참조되므로 세션에서 자동으로 업데이트됩니다 (세션에 다시 할당 할 필요가없는 HashTable).
그러나 State Server (OutProc 모드)에서 코드를 실행하면 해시 테이블을 serialize하여 세션 데이터를 다른 프로세스에 저장해야합니다.
그러나 Total_Pages의 값은 Thread가 완전히 실행 된 후에도 Page2.aspx에서 업데이트되지 않습니다.
그래서 세션 변수에 모든 업데이트를 State-Server에 저장하도록하는 이벤트 나 메소드가 있습니다. 그렇다면 pls가 말해줍니다. 그렇지 않다면 pls는 page2.aspx에서 업데이트 된 값을 얻기위한 아이디어를 제안합니다.
어떻게 호출하고 있습니다 Page2.aspx – user1130157
모든 페이지를 완전히로드 할 때까지 Jquery에서 계속 호출하고 있습니다. –
OutProc 모드에서 실행하고 디버그하려고하면 Page2.aspx를 실행할 때 두 번째 Session_Start 이벤트가 있습니까? – Alexander