一个关于Asp.net多线程的问题

shaipe 2009-04-28 09:30:56
在用Asp.net多线程的时候遇到一个问题.多谢大侠们帮我解答一下


private void test(){
Thread[] ths = new Thread[2];
for (int i = 0; i < 2; i++)
{
ths[i] = new Thread(new ThreadStart(Resp));
ths[i].Start();
}
}

private void Resp()
{
for (int j = 0; j < 10; j++)
{
Context.Response.Write("sss" + j + "<Br/>");
Context.Response.Flush();
}
}


感谢帮我看一下这个问题应该怎么解决,在线等...
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaipe 2009-04-29
  • 打赏
  • 举报
回复
怎么样才能不让多个线程同时去抢 context.response.write 这个方法执行呢

经过多方调试发现是多个线程同时去抢这个方法而造成的报错
皓月明 2009-04-29
  • 打赏
  • 举报
回复
学习
shaipe 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 laogao999 的回复:]
我在自己的机器上调试过了
生成两个线程的结果的话
context.response.write(" <script language='javascript'>document.write('hello'); </script>");
不要加上Flush
[/Quote]


这样的方法我也试过了,一样报那个错.
想要的效果就是把循环一次处理结果返回给客户端.
laogao999 2009-04-29
  • 打赏
  • 举报
回复
我在自己的机器上调试过了
生成两个线程的结果的话
context.response.write("<script language='javascript'>document.write('hello');</script>");
不要加上Flush
izee 2009-04-29
  • 打赏
  • 举报
回复
在非web请求线程中,Context是null值
要回发给浏览器的数据,不能在非web请求线程中处理
shaipe 2009-04-29
  • 打赏
  • 举报
回复
可是当我在上边线程调用时增加ths[i].Join();或者只采用一个线程的时候又不会出现这样的错误.

我不使用的Flush的时候一样会出这样的错误...
shaipe 2009-04-29
  • 打赏
  • 举报
回复

private void test(){
Thread[] ths = new Thread[2];
for (int i = 0; i < 2; i++)
{
ths[i] = new Thread(new ThreadStart(Resp));
ths[i].Start();
}
for (int i = 0; i < 2; i++)//在这里加上这样一个循环后可以解决报错的问题,但是效率远没有单线程处理时的效率高
ths[i].Join();
}


我用这样的方法做生成静态页面的测试,结果是:
单线程: 500条记录 用时 50秒
5个线程: 500条记录 用时1分50秒

还没有找到是什么原因.
Sysping1 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 shaipe 的帖子:]
在用Asp.net多线程的时候遇到一个问题.多谢大侠们帮我解答一下


C# code
private void test(){
Thread[] ths = new Thread[2];
for (int i = 0; i < 2; i++)
{
ths[i] = new Thread(new ThreadStart(Resp));
ths[i].Start();
}
}

private void Resp()
{
for (int j = 0; j < 10; j++)
{
Context.Response.Write(…
[/Quote]
页面已FLush到页面,本次访问已结束,线程再次FLush自然是失败!
yangqidong 2009-04-28
  • 打赏
  • 举报
回复
你在学多线程吗,用控制台程序去练习吧
shaipe 2009-04-28
  • 打赏
  • 举报
回复

Context.Response.Write("sss" + j + "<Br/>"); //这里报错"服务器无法刷新已完成的响应" 

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧