public delegate void StartDelegate(int i);//用到的委托private void Method1()
{
for(int i=0;i<9;i++)
{//for1
for(int j=0;j<3;j++)
{//for2
//开启线程
StartDelegate anpd = new StartDelegate(abc);
anpd.BeginInvoke(i,null,null);
}//for2 //等for2里的三个线程都工作完毕后,才能继续for1循环
//此处用此方法虽然控制住线程,但我程序运行很慢,好像死机一样,怎么改一下?
while(ThreadNum!=0)
{
}
ThreadNum=3;}//for1
}private void abc(int i)
{
//可能是几分钟的操作
......
ThreadNum=ThreadNum-1;
}
{
for(int i=0;i<9;i++)
{//for1
for(int j=0;j<3;j++)
{//for2
//开启线程
StartDelegate anpd = new StartDelegate(abc);
anpd.BeginInvoke(i,null,null);
}//for2 //等for2里的三个线程都工作完毕后,才能继续for1循环
//此处用此方法虽然控制住线程,但我程序运行很慢,好像死机一样,怎么改一下?
while(ThreadNum!=0)
{
}
ThreadNum=3;}//for1
}private void abc(int i)
{
//可能是几分钟的操作
......
ThreadNum=ThreadNum-1;
}
做完那三个线程后就分别将它们赋值为true
那个while的函数写成这样就行了:
while(true)
{
if(flag1==true&&flag2==true&&flag3=true)
break;
Application.Doevents();
Thread.Sleep(1000);
}
你每执行一次睡眠一秒种就不会好像死掉一样了
关键不在这,关键在于你每次循环要睡眠一下
Application.Doevents();
Thread.Sleep(1000);
关键就在Application.Doevents();
Thread.Sleep(1000);
别的我自已搞定了,现在基本好了