读书人

为啥不能这样写呢

发布时间: 2013-04-21 21:18:07 作者: rapoo

为什么不能这样写呢?

 protected void Button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(() =>
{
aa();
}
)).Start();

Response.Write("bb");
}

public void aa()
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Response.Write("aa");

}
}



为什么执行不到aa()方法呢

直接提示
[解决办法]
唯一能想到的就是你的asp.net项目 没有target .net framework 3.0
[解决办法]
现在的.net怎么越来越像js了,晕。

看到多线程头大了。帮顶
[解决办法]
Thread t1 = new Thread(aa);
t1.Start();
Response.Write("bb");
t1.Join();


public void aa()
{
for (int i = 0; i < 10; i++)
{
Response.Write("aa");
}
}

这样
[解决办法]
我觉得是 当 Button1_Click这个结束以后不能再 aa()里再调用Response.Write前台写数据了

Response.Write("bb");前加Thread.Sleep(1000);

能运行一些aa()


[解决办法]
缺少等待aa进程,b/s和c/s还是有所区别的
t1.Join();


引用:
引用:
Thread t1 = new Thread(aa);
t1.Start();
Response.Write("bb");
t1.Join();


public void aa()
{
for (int i = 0; i < 10; i++)
……

[解决办法]
aa()方法是子线程


没有 阻塞 主线程 Button1_Click 方法
所以没有同步输出

[解决办法]

引用:
引用:
缺少等待aa进程,b/s和c/s还是有所区别的
t1.Join();


引用:引用:
Thread t1 = new Thread(aa);
t1.Start();
Response.Write("bb");
……


不是不能用,是我刷新几次见没有什么变化,所以故意去掉的,这样就可以看到bb有时在前边,有时在后边,效果就很显示了
[解决办法]
网页里面根本没必要使用线程,直接 aa();
[解决办法]

public void aa()
{
for (int i = 0; i < 10; i++)
{
Response.Write("aa");
Thread.Sleep(1);
}
}

先输出,再等待
[解决办法]
Thread t1 = new Thread(aa);
t1.Start();
Response.Write("bb");
Thread.Sleep(1);
Response.Write("cc");
t1.Join();

public void aa()
{
for (int i = 0; i < 10; i++)
{
Response.Write("aa");
Thread.Sleep(1);
}
}


这样就明显了

读书人网 >asp.net

热点推荐