zoukankan      html  css  js  c++  java
  • 线程等待 循环执行

    最近做一个校准项目,需要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结束再进行下一个循环了。

  • 相关阅读:
    第七章习题G题
    第二周习题O题
    P4735 最大异或和
    P3008 [USACO11JAN]道路和飞机Roads and Planes
    P4009 汽车加油行驶问题
    P1073 最优贸易
    P2260 [清华集训2012]模积和
    P2865 [USACO06NOV]路障Roadblocks
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P4180 【模板】严格次小生成树[BJWC2010]
  • 原文地址:https://www.cnblogs.com/syqun/p/thread.html
Copyright © 2011-2022 走看看