我有一个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