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

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

程序运行后执行主线程的第一次循环,执行到代码A后,调用线程B异步执行 主线程继续执行
主线程第一次循环执行完后,执行第二次循环, 然后执行到代码A后 判断B线程的执行状态,如果B线程没有完成,则主线程等待B线程执行完成后再继续向下执行
以此反复
我这边写了B线程回调函数中将判断条件设为true,然后在B线程前面对这个条件进行了判断,发现没有用 不知道怎么回事儿
大神帮忙看下怎么做才能实现我想要的效果

2个回答


        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();
testcs_dn
微wx笑 为什么不是通过线程的状态去判断?成功只是其中一种可能。
接近 3 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 lz如果觉得满意,请采纳下
接近 3 年之前 回复

1.线程有个IsAlive属性可以判断是否结束;
2.可以使用一个全局变量来标识当前线程B是否在执行,在启动线程B之前判断即可;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐