我想在我的项目 (WPF) 中使用并行编程。这是我的 for 循环代码。
for (int i = 0; i < results.Count; i++)
{
product p = new product();
Common.SelectedOldColor = p.Background;
p.VideoInfo = results[i];
Common.Products.Add(p, false);
p.Visibility = System.Windows.Visibility.Hidden;
p.Drop_Event += new product.DragDropEvent(p_Drop_Event);
main.Children.Add(p);
}
它可以正常工作。我想用 Parallel.For 写它,我写了这个
Parallel.For(0, results.Count, i =>
{
product p = new product();
Common.SelectedOldColor = p.Background;
p.VideoInfo = results[i];
Common.Products.Add(p, false);
p.Visibility = System.Windows.Visibility.Hidden;
p.Drop_Event += new product.DragDropEvent(p_Drop_Event);
main.Children.Add(p);
});
但是在产品类的构造函数中发生错误是
调用线程必须是 STA,因为许多 UI 组件都需要这个。
那么我使用了 Dispatcher 。这是代码
Parallel.For(0, results.Count, i =>
{
this.Dispatcher.BeginInvoke(new Action(() =>
product p = new product();
Common.SelectedOldColor = p.Background;
p.VideoInfo = results[i];
Common.Products.Add(p, false);
p.Visibility = System.Windows.Visibility.Hidden;
p.Drop_Event += new product.DragDropEvent(p_Drop_Event);
main.Children.Add(p)));
});
由于我的“p”对象,我得到了错误。它期望“;” 它还表示产品类别;类名此时无效。然后我在 Parallel.For 上方创建了产品对象,但仍然出现错误..
如何修复我的错误?