gpt4 book ai didi

c# - 如何使用Parallel.For?

转载 作者:太空狗 更新时间:2023-10-29 20:59:14 25 4
gpt4 key购买 nike

我想在我的项目 (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);
});

但是在producd类的构造函数中出现错误是

调用线程必须是 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 上面创建了产品对象,但我仍然得到错误..

我该如何修正我的错误?

最佳答案

简单的答案是您正在尝试使用需要单线程的组件,更具体地说,它们看起来只想在 UI 线程上运行。所以使用 Parallel.For 对你没有用。即使在使用调度程序时,您也只是将工作编码到单个 UI 线程,这会抵消Parallel.For 带来的任何好处。

关于c# - 如何使用Parallel.For?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com