并行运行一个线程

本文关键字:一个 线程 运行 并行 | 更新日期: 2023-09-27 17:54:46

我在一个威胁中更新一个图表,我进入一个例行程序,进行4秒的测量。该例程返回双精度类型。我注意到的是,我的图表停止显示活动4秒,直到我完成收集数据。我需要启动一个新线程,并将GetTXPower()活动放在后台。换句话说,我希望GetTXPower()和图表并行运行。有什么建议吗?

下面是我的代码:
             stopwatch.Start();
            // Get Tx Power reading and save the Data
            _specAn_y = GetTXPower();
            _pa_Value = paData.Start;
            DataPoint.Measurement = _specAn_y;
            //Thread.Sleep(50);
            double remaining = 0;                
            do
            {
              charting.stuff  
            }
            uxChart.Update();

并行运行一个线程

我建议查看任务并行库。

从。net Framework 4开始,TPL是编写多线程和并行代码的首选方式。

由于您还需要从GetTXPower返回的结果,因此我将使用Task<double>

Task<double> task = Task.Factory.StartNew<double>(GetTXPower);

根据需要结果的时间,可以通过检查task.IsCompleted来查询任务是否已经完成,也可以通过调用task.Wait()来阻塞线程等待任务完成。您可以通过task.Result属性获取结果。

另一种选择是在初始任务中添加延续:

Task.Factory.StartNew<double>(GetTXPower).ContinueWith(task => 
{
    // Do something with the task result.
});

创建一个收集数据的void方法(我将其称为MeasureMentMethod)。使用下面的代码创建一个线程:

Thread MeasurementThread = new Thread(new ThreadStart(MeasurementMethod));

你可以用

运行这个线程
MeasurementThread.Start();

如果你的线程有这样的东西:

while(true){
    //Run your code here
    Thread.Sleep(100);
}

那么你可以从头开始,它会一直收集数据。

那么,你会有主线程来更新图表,你会启动线程来获取数据在一边。