我在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循环周围使用秒表没有问题。