asp.net多线程编程
我用asp.net web 和window form 都测试过,winform中多了一句System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;线程数目与指定的相同,但是累和结果不对。在asp.net web当中线程数目不与指定数目相同,有时多有时少但都没有达到指定的数目,每次重新计算结果都不一样。
我本人不懂多线程编程的,这些代码是在网上找的
现在问题是:
1、修改代码让其显示结果正确(可以单独做一个循环测试结果是多少,我测试从1累加到1亿是5 000 000 050 000 000)
2、我现在要用多线程批量静态生成,文章数目在3万以上,20万以内,求相关代码,注意效率问题(关于线程编程就可以,分数是另给的100分)
前台代码:
后台代码
我本人不懂多线程编程的,这些代码是在网上找的
现在问题是:
1、修改代码让其显示结果正确(可以单独做一个循环测试结果是多少,我测试从1累加到1亿是5 000 000 050 000 000)
2、我现在要用多线程批量静态生成,文章数目在3万以上,20万以内,求相关代码,注意效率问题(关于线程编程就可以,分数是另给的100分)
前台代码:
<div><p>累加开始于:<asp:TextBox ID="txtMinValue" runat="server"></asp:TextBox></p>
<p>累加结束于:<asp:TextBox ID="txtMaxValue" runat="server"></asp:TextBox></p>
<p>使用线程数:<asp:TextBox ID="txtThreadNumber" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="开始计算" OnClick="Button1_Click" /></p>
<p>累加结果:<asp:TextBox ID="txtOutput" runat="server"></asp:TextBox></p>
<p>信息:</p>
<asp:ListBox ID="lstMessage" runat="server" Height="244px" Width="353px"></asp:ListBox>
</div>
后台代码
protected void Button1_Click(object sender, EventArgs e)
{
txtOutput.Text = "0";
lstMessage.Items.Clear();
int threadNumber = Convert.ToInt32(this.txtThreadNumber.Text);
for (int i = 1; i <= threadNumber; i++)
{
try
{
Thread thread = new Thread(new ThreadStart(Add));
thread.Name = i.ToString();
//thread.Priority = ThreadPriority.Normal;
thread.Start();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
}
}
}
private void Add()
{
DateTime beginTime = DateTime.Now;
long minValue = long.Parse(txtMinValue.Text);
long maxValue = long.Parse(txtMaxValue.Text);
int threadNumber = Convert.ToInt32(txtThreadNumber.Text);
int thradOrder = Convert.ToInt32(Thread.CurrentThread.Name);
long step = (maxValue - minValue + 1) / threadNumber;
long beginValue = minValue + step*(thradOrder-1);
long result = 0;
long endValue=beginValue+step;
for (long i = beginValue; i < endValue; i++)
{
result += i;
}
lock (this)//线程同步锁
{
long sum = long.Parse(txtOutput.Text);
sum += result;
txtOutput.Text = sum.ToString();
}
DateTime endTime = DateTime.Now;
TimeSpan timeSpan = endTime - beginTime;
string message = "线程" + Thread.CurrentThread.Name + ":" + beginValue.ToString() + "到" + endValue.ToString()
+ ",耗时:" + timeSpan.TotalMilliseconds.ToString() + "毫秒";
this.lstMessage.Items.Add(message);
Response.Write(message + "<br/>");
Thread.CurrentThread.Abort();
}
...全文
相关推荐
ASP.NET多线程编程
通过学习20060721--ASP.NET多线程编程(二).pdf文档,你可以深入探究这些概念和技术,进一步提升你的ASP.NET开发能力。
ASP.NET多线程编程(一)
### ASP.NET多线程编程(一)#### 课程概述本课程由讲师邵志东讲解,旨在介绍ASP.NET环境下的多线程编程技术。
ASP.NET多线程编程(一)--vs2003
ASP.NET多线程编程是开发高效、响应迅速的Web应用程序的关键技术之一,尤其是在处理大量并发请求时。
ASP.NET多线程编程视频一
ASP.NET多线程编程视频一
编程项目实战:基于asp.net技术的多线程的TCP端口扫描程序的设计与实现
编程项目实战:基于asp.net技术的多线程的TCP端口扫描程序的设计与实现;编程项目实战:基于asp.net技术的多线程的TCP端口扫描程序的设计与实现;编程项目实战:基于asp.net技术的多线程


