• 线程等待 循环执行


    最近做一个校准项目,需要10次校准,但是里面各种硬件控制开了很多线程,需要等待一次校准得出数据,再在得出的数据上进行下一步的循环。

    各种Thread、Task、Timer都试过,超级纠结,主要是没等到一次校准结束,就开始进入下次循环了。

    最终在大神的帮助下,解决问题。

    方法:

    using System.Threading.Tasks;

    using System.Threading;

    TaskFactory uiFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());

    void *****cmd()

    {

      ************//一些前面的工作

      Thread checkFinishedthread = new Thread(() => CheckIfFinishedThread());
      checkFinishedthread.IsBackground = true;
      checkFinishedthread.Start();

    }

    void CheckIfFinishedThread()
    {

      for (int i = 0; i < 10;i++ )
      {
        uiFactory.StartNew(() => ******).Wait();

        //一些赋值语句,一定要放在uiFactory中哦,因为这个还出现了Must create DependencySource on same Thread as the DependencyObject.的错误。

        uiFactory.StartNew(()=>需要等待执行结束的程序).Wait();
        while (未达到等待的条件)
        {
          Thread.Sleep(30);
        }
        if (达到条件)
        {
          数据处理

        }

       }
    }

    这样就能等待每次Calibration结束再进行下一个循环了。

  • 相关阅读:
    Go通过闭包避免程序运行崩溃
    占个坑
    Go多核并行
    一个计划
    python入门:模拟简单用户登录(自写)
    python入门:if、elif、else 条件语句的基本用法
    python入门:if和else的基本用法
    python入门:print打印输出的用法
    python入门:最基本的用户登录
    Python入门:Python基础笔记
  • 原文地址:https://www.cnblogs.com/syqun/p/thread.html
Copyright © 2020-2023  润新知