我有一個Web應用程序,計算文檔的話。所以它需要很長時間。我已經將它分成不同的頁面,並在不同的線程中爲每個頁面調用方法。我使用線程池作爲asp.net多線程與計時器
ThreadPool.SetMaxThreads(25, 200);
State state;
Hashtable ht = new Hashtable();
for (int i = 0; i < 100; i++)
{
state = new State();
state.Input = "Pakistan";
ThreadPool.QueueUserWorkItem(PerformUserWorkItem, state);
ht.Add(i, state);
}
State tempState;
for (int i = 0; i < 100; i++)
{
tempState = (State)ht[i];
if (tempState.eventWaitHandle.WaitOne())
{
Session["percentage"] = i;
lblPercentage.Text = (i * 1).ToString();
}
}
private static void PerformUserWorkItem(Object stateObject)
{
State state = stateObject as State;
if (state != null)
{
// do something lengthy with state.inputString
state.result = state.Input.Length;
state.eventWaitHandle.Set(); // signal we're done
}
}
在上面的代碼我已排隊等待的工作線程和在哈希表保存它們的初始狀態。 我有計時器更新頁面上的進度欄,有多少頁計數完成,剩下多少頁。
我需要重定向我的網頁到另一個頁面,我得到的錯誤,在這種情況下,響應不可用。我曾嘗試使用Server.Transfer的,但得到的錯誤作爲
「錯誤執行子請求」 的話,我已經禁用了目標頁面(而我正在重定向)屬性enabeviewstate =假,但它也沒」 t爲我工作。 畢竟這我的視覺工作室得到stucked,我得到這個錯誤兩次 「本地主機無法連接到本地網絡服務器」 錯誤2次我的視覺工作室工作正常。
更新
這裏是我的定時器聲明的
System.Timers.Timer t = new System.Timers.Timer(3000);
t.Enabled = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
lbl1.Text = DateTime.Now.ToString();
}
你使用什麼類型的定時器? – Hinek 2010-12-07 09:48:15