Создаю я второй поток для расчетов параллельных, расчеты в цикле. В итоге, чтобы после итерации добавить данные в таблицу основного потока, вызываю 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?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости