Я хочу использовать параллельное программирование в своем проекте (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, поскольку этого требуют многие компоненты пользовательского интерфейса.
Ну тогда я использовал 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, но все равно получаю ошибку..
Как я могу исправить свои ошибки?