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

posted on 2014-04-24 14:10  樂兒  阅读(1525)  评论(0编辑  收藏  举报