问大神一个关于异步线程回调的问题
程序运行后执行主线程的第一次循环,执行到代码A后,调用线程B异步执行 主线程继续执行
主线程第一次循环执行完后,执行第二次循环, 然后执行到代码A后 判断B线程的执行状态,如果B线程没有完成,则主线程等待B线程执行完成后再继续向下执行
以此反复
我这边写了B线程回调函数中将判断条件设为true,然后在B线程前面对这个条件进行了判断,发现没有用 不知道怎么回事儿
大神帮忙看下怎么做才能实现我想要的效果
bool ok = false, bInit = false;
Thread b = null;
object locker = new object();
Thread a = new Thread(new ThreadStart(delegate()
{
while (true)
{
//.......
if (b == null)
{
b = new Thread(new ThreadStart(delegate()
{
//b代码,如果成功设置ok为true
//lock (locker) { ok = true; }
}));
b.Start();
}
if (bInit)
{
lock (locker)
{
while (!ok) Thread.CurrentThread.Join(500);//未执行完毕挂起
}
}
bInit = true;
//其余代码
}
}));
a.Start();
1.线程有个IsAlive属性可以判断是否结束;
2.可以使用一个全局变量来标识当前线程B是否在执行,在启动线程B之前判断即可;