Синхронизация потоков WPF

359
03 декабря 2017, 10:41

Создаю я второй поток для расчетов параллельных, расчеты в цикле. В итоге, чтобы после итерации добавить данные в таблицу основного потока, вызываю BeginInvoke

for (int i = 0; i < paramOptFirst.Count; i++)
            {
                  wnd.Dispatcher.BeginInvoke(new Action(() => wnd.dataGrid.Items.Add(new ResultData(Timeframe, startDateOpt + " -- " + endDateOpt, startDateFrwd + " -- " + endDateFrwd, resultOptOne[i][0], resultOptOne[i][1], resultOptOne[i][2], resultOptOne[i][3], resultOptOneF[i][0], resultOptOneF[i][1], resultOptOneF[i][2], resultOptOneF[i][3], paramOptFirst[i]))));
            }

Но проблема в том, что пока основной поток пытается добавить в таблицу данные, поток для расчетов эти данные уже успевает обнулить и приступить к новому расчету. Тут и выскакивает, что пытаюсь добавить paramOptFirst[i], когда его уже обнулили и в итоге получаю исключение. Как можно заставить поток расчетов вначале подождать, пока выполнится функцию BeginInvoke?

READ ALSO
Эхо клиент сервер

Эхо клиент сервер

Здравствуйте, реализую клиент-сервер по типу-эхо: клиент каждые 10 секунд шлет пакет серверу, а тот отвечаетЕсли нужно отрубить клиента, то все...

288
Как получить доступ к классу настроек приложения из библиотеки dll?

Как получить доступ к классу настроек приложения из библиотеки dll?

Имеется приложение и подключенная к нему библиотекаНеобходимо из библиотеки изменить некоторые настройки (user settings)

244
Неправильное отображение Версии Windows

Неправильное отображение Версии Windows

Всем приветРаботаю с Visual Studio 2012 и на Windows 10

275
Реализовать placeholder в UserControl

Реализовать placeholder в UserControl

Доброго времени суток, всемЯ так понимаю, в WPF нет контрола, который будет похож на TextBox и иметь свойство placeholder'а

296