プロジェクト (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 クラスのコンストラクタでエラーが発生します。
多くの UI コンポーネントがこれを必要とするため、呼び出しスレッドは STA でなければなりません。
それでは、 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 の上に製品オブジェクトを作成しましたが、それでもエラーが発生します..
エラーを修正するにはどうすればよいですか?