Как пользоваться Parallel.For?

Я хочу использовать параллельное программирование в своем проекте (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, но все равно получаю ошибку..

Как я могу исправить свои ошибки?

6
задан Steven 14 August 2012 в 13:35
поделиться