我在 WPF 应用程序中使用这个逻辑。我看到执行在 3 秒内完成(来自数据库),但由于某种原因,秒表打印出 17 秒或更长时间。
Parallel.For 块中的代码进行大量计算并写入数据库。所以在视觉上,我的意思是从数据库中选择查询。
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 循环周围使用秒表没有问题。