У меня есть рабочий поток, которому нужно добавить элементы в BindingList
.Однако BindingList
привязан к DataGridView
.Итак, когда я пытаюсь добавить в список, я получаю InvalidOperationException (Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.)
Обычно для этого исключения вы должны сделать:
if(winformControl.InvokeRequired) {
winformControl.Invoke(MethodDelegate);
}
Однако привязка данных запутывает вещи, так как естьнет контроля Winform в поле зрения.Все, что у меня есть, это следующая строка, которая выдает исключение:
ClassInstance.MyBindingList.Add(myObject);
Если у вас есть решение специально для этого сценария, отлично.
Если нет, как я могу заставить рабочий поток сказать моему основному потоку выполнить определенный метод (с несколькими параметрами, предоставленными рабочим потоком)?Это может быть предпочтительным вариантом, так как мой рабочий поток на самом деле делает кучу вещей в данный момент (например, запись в базу данных), и я не уверен, все ли поточно-ориентировано.Я студент и новичок в многопоточности, и это еще не моя сильная сторона.