在Parallel.For或Parallel.ForEach周围使用StopWatch是否有任何问题?

时间:2012-11-16 04:01:45

标签: c# wpf stopwatch parallel.foreach

我在WPF应用程序中使用此逻辑。我看到在3秒内以可视方式(从数据库中)完成执行,但由于某种原因,秒表打印出17秒或更长时间。

Parallel.For块中的代码执行大量计算并写入db。所以从视觉上来说,我的意思是从数据库选择查询。

Stopwatch stopwatch = new Stopwatch();

            // Begin timing
            stopwatch.Start();

            String currentTime = System.DateTime.Now.ToString();
            statusLabel.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
                 new Action(delegate() { statusLabel.Content = "New Minute data processing..." + currentTime; }));


            int size = NumSymWatching;


            Parallel.For(0, size, x =>
             {
               CalculateStudies(SymbolsToWatch[x], SymbolSessions[x]);
              });



            UpdateApplicationStatusTable();
            stopwatch.Stop();

            statusLabel.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
                 new Action(delegate() { lblTimer.Content = "Time taken to run: " + stopwatch.Elapsed; }));
            isRunning = false;

修改 经过几次测试后,我发现在Parallel.For循环周围使用秒表没有问题。

0 个答案:

没有答案