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结束再进行下一个循环了。

  • 相关阅读:
    ASP.NET(C#) DataSet数据导出到Excel
    GridView生成导出EXECL
    Gridview 手动排序实现
    用DirectoryInfo搜索文件夹时过滤隐藏文件夹
    为 DropDownList 选项添加背景或样式 收
    IIS中 CS0016: 未能写入输出文件 …….*.dll拒绝访问
    singletontheorylazy.cs
    adaptertwowayseabird.cs
    StatefulLabel.cs
    LifecycleControl.cs
  • 原文地址:https://www.cnblogs.com/syqun/p/thread.html
Copyright © 2011-2022 走看看