线程什么时候开始?

ProjectDD 2009-11-27 05:05:59
AutoResetEvent Test(){
AutoResetEvent are=new AutoResetEvent(false);
Thread t=new Thread(()=>{
x.Y();//耗时方法
//...
are.Set();
};
t.Start();
return are;
}

void Test2(){
var v=Test();
v.WaitOne(); //A
}

//大家觉得A处会有什么情况,是一至等下去呢?还是等到一定时候结束
在Test2中执行了Test方法,但是当Test2没有执行完毕时,Test方法中的线程启动了吗?
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiamiking 2009-11-27
  • 打赏
  • 举报
回复
1楼正解!
多线程是异步的。但是还是有分主线程的,分支线程没有完成,主线程是不会完成的
zhujiazhi 2009-11-27
  • 打赏
  • 举报
回复
Test方法中的线程启动了
A处一直等下去,直到那个Thread启动函数运行完成
ProjectDD 2009-11-27
  • 打赏
  • 举报
回复
ProjectDD 2009-11-27
  • 打赏
  • 举报
回复
我终于找到原因了,原来是因为,我Test方法的线程方法中
有一个是异步调用 Post(...)就是这个东西,把他注释掉程序
行为就正常了。。
ProjectDD 2009-11-27
  • 打赏
  • 举报
回复
但实际情况好象是 我的程序在那里会一直等,但等不到信号
开始怀疑是闭包问题导致的are不一致什么的,后来改用全局
的are情况依然如此,程序可以返回但会一直死在那(收不
到are发出的信号了)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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