C#异步线程回调问题,请大神帮忙

问大神一个关于异步线程回调的问题

程序运行后执行主线程的第一次循环,执行到代码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之前判断即可;