hardtoking 2017-08-21 17:51 采纳率: 0%
浏览 1044
已结题

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

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

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

  • 写回答

2条回答 默认 最新

  • Go 旅城通票 2017-08-22 01:12
    关注
    
            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();
    
    评论

报告相同问题?

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)