Member 12237141 Ответов: 1

Вызывающий поток не может получить доступ к этому объекту, поскольку он принадлежит другому потоку


Сделать исключение

Вызывающий поток не может получить доступ к этому объекту, поскольку он принадлежит другому потоку.

здесь есть исключение....
DataCollection.Add(new QueryFill(Convert.ToDouble(lstPlotterData[j].Rows[i][1]), Convert.ToDateTime(lstPlotterData[j].Rows[i][0]), Convert.ToString(lstPlotterData[j].Rows[i][2]).Trim()));


Что я уже пробовал:

Я Пытался
Dispatcher.BeginInvoke(
               new ThreadStart(() => DataCollection.Add(new QueryFill(Convert.ToDouble(lstPlotterData[j].Rows[i][1]), Convert.ToDateTime(lstPlotterData[j].Rows[i][0]), Convert.ToString(lstPlotterData[j].Rows[i][2]).Trim()))));
но безрезультатно

Dave Kreskowiak

Это "то, что я пробовал" очень мило. Делая "новый ThreadStart", вы отменяете то, что диспетчер.BeginInvoke пытался сделать. BeginInvoke выполняет код в потоке, к которому прикреплен диспетчер (обычно это пользовательский интерфейс), а затем вы идете и запускаете поток в коде, разрушая цель функциональности BeginInvoke.