0
我有一個執行長時間運行任務的asp.net頁面。所以我在一個單獨的線程中執行任務並定期輪詢頁面以檢查狀態。從後臺線程訪問SessionState
public partial class ResultPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(delegate()
{
ProcessItems(parameters);
}));
t.Name = "ThreadInfoPathProcess";
t.Priority = ThreadPriority.Normal;
t.Start();
}
private void ProcessItems(Parameters params)
{
//
//some code
//
//save the result in session and take it from another page
lock (this.Session.SyncRoot)
this.Session[resultid] = result;
}
}
但是當我從其他頁面訪問會話時,我將會話變量設置爲空。這裏可能是什麼問題?
頁面調用的順序是什麼? – oleksii 2011-05-28 11:44:33
該頁面有一個asp定時器控件,該控件返回頁面並檢查線程的狀態。線程從頁面開始並將結果更新爲會話狀態。在timer_tick中,我檢查線程是否已完成運行,並重定向到另一頁。從新頁面讀取會話狀態以獲得線程給出的結果並對其進行處理。 – NLV 2011-05-28 11:50:07