从线程获取中间结果

本文关键字:结果 中间 获取 线程 | 更新日期: 2023-09-27 18:20:28

我有一个线程,我在其中进行大量计算。在上面的线程中,我循环检查新的结果。下面的代码显示了我如何检查当前的最佳结果。

private class BestFitThreadClass
{
    public double bestError { get; private set; }
    public void calculate()
    {
        //do some heavy calculation
        for (i = 1; i < 100000; i++)
            bestError = i;
    }
}
static void Main()
{
    var myBestFit = new BestFitThreadClass();
    var myBestFitThread = new Thread(myBestFit.calculate);
    myBestFitThread.Start();
    double oldError = double.MaxValue;
    while(myBestFitThread.ThreadState != ThreadState.Stopped)
    {
        if (myBestFit.bestError < oldError)
        {
            oldError = myBestFit.bestError;
            Console.WriteLine(oldError);
        }
        Thread.Sleep(10);
    }
}

这样做我会错过许多中间结果。有没有一种方法可以在每次发现新的bestError时在覆盖线程中触发事件?

从线程获取中间结果

您可以使用Progress实例来允许操作根据该操作的进度向外部实体指示该操作的进展。调用方可以指定进度更新时要执行的操作(在这种情况下,将进度写入控制台),然后操作本身可以在计算每个中间值时向对象报告进度。