当前线程A创建另一个线程B后,怎样让线程A等待直到线程B完成? 这种问题可以用多线程实现么?我做了一个winform的程序,有一些比较费时间的操作,执行这些操作时程序就如死了一般长时间不响应了,为了解决这个问题,我就在main()中创建另一个线程来执行这个操作,但是下一步操作需要这个线程运行的结果,也就是主线程需要等待,使用了Thread.Join(),但是一调用,程序就又“不响应”了,怎样才能运行这个比较费时操作的时候,使程序不至于“死掉”?,而且那个那个费时间的操作需要循环执行多次, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要阻塞线程试试sleep()或者干脆将suspend()然后等B结束后再将A resume(); 在执行耗时线程开始时把主窗口所有可以操作的按钮等什么的Enable属性都设为false,等线程执行完后才把相应的控件的Enable属性变回true,这样既不阻塞主线程也不能执行下一步!! 楼主,看我的。public bool bFinished = false; //定义全局变量void Main(){bFinished = false;Thread thA = new ThreadStart(new ThreadStart(thProc));thA.Start();while(!bFinished){//开始同步等待直到线程thA执行完Application.DoEvents();}}void thProc(){//执行n多代码bFinished = true; //这里要看!!!!!} 为了不过多占用CPU,可以在 在 while里面加入 ..Sleep(100); 用这个信号量,专门用来线程同步的;System.Threading.Manu*** (竟然记不得了,中文意思是(手动XX),不过在vs中,敲开头就出来了)这个类。先准备一下,调用reset()方法。主线程中调用waitone()方法就是使主线程阻塞。在另一个线程中调用它的set()方法,就让刚才阻塞的线程继续。你可以在顺利接受到参数后调用他继续。 while应该和join()一样把,在while的时候主线程照样忙于做while的事,没机会去处理别的事 我问个数据库优化的 window form GridView的“编辑”按钮如何与服务器端代码连接 如果是你出关于组件的题你会出什么? 类库的异步问题,不知道怎么实现 ajax能改变现在的web开发模式吗 怎么绑定pictureBox1呀。 C# addin, word ocx控件的编程与插入到正文中。 winform 下如何直接修改DataGrid数据.!!up都有分!! c#与vb.net哪一个更好? 这是什么问题?在线等,急~~~~ 用C#.net.................写在线播放视频........高手帮忙啊!!!急~!
试试sleep()
或者干脆将suspend()
然后等B结束后
再将A resume();
public bool bFinished = false; //定义全局变量void Main()
{
bFinished = false;
Thread thA = new ThreadStart(new ThreadStart(thProc));
thA.Start();while(!bFinished)
{
//开始同步等待直到线程thA执行完
Application.DoEvents();
}}void thProc()
{
//执行n多代码bFinished = true; //这里要看!!!!!
}
System.Threading.Manu*** (竟然记不得了,中文意思是(手动XX),不过在vs中,敲开头就出来了)
这个类。
先准备一下,调用reset()方法。主线程中调用waitone()方法就是使主线程阻塞。
在另一个线程中调用它的set()方法,就让刚才阻塞的线程继续。你可以在顺利接受到参数后调用他继续。