0

у меня есть метод который возвращает объект и за кулисами он использует другой поток. Сам метод вручную не вызывается и поток вручную не создается. Есть возможность только подписаться на событие и обработать результат который пришел. Однако при попытке обработать результат и добавить его в BindingList выдается ошибка о том, что к BindingList идет попытка доступа из другого потока. Подскажите как это можно исправить?

HHHack
  • 31
  • В приведенных мною ссылках есть ответ на ваш вопрос. Используйте BeginInvoke в своем подписчике. Т.е. добавляйте элемент в BindingList внутри BeginInvoke – Андрей NOP Apr 27 '18 at 07:11
  • И где в BindingList BeginInvoke? Это же не контрол по типу лейбла. – HHHack Apr 27 '18 at 07:14
  • Да, но вы можете взять любой контрол и вызвать BeginInvoke на нем – Андрей NOP Apr 27 '18 at 07:17
  • Проблема в том, что их нет, есть просто класс и его BindingList, который я хочу заполнить. – HHHack Apr 27 '18 at 07:20
  • Ага, тогда вам нужно в этом классе иметь диспетчер и добавлять запись с помощью него. Диспетчер можно получить так: var dispatcher = Dispatcher.CurrentDispatcher;, но вам нужно получить его в форме и передать в свой класс. Потом просто вызываете dispatcher.BeginInvoke(...); – Андрей NOP Apr 27 '18 at 07:29
  • Где создается ваш этот класс, в котором BindingList? – Андрей NOP Apr 27 '18 at 07:30
  • В Program, через IoС контейнер – HHHack Apr 27 '18 at 07:34
  • Сам класс это public class MainPresenter : BasePresenter{ private BindingList objects } IMainView имеет только SetDataSource(BindingList objects) – HHHack Apr 27 '18 at 07:37
  • Вот в Program значит вам нужно получить диспетчер и передать его в свой класс – Андрей NOP Apr 27 '18 at 07:38
  • Хорошо, попробую, спасибо. – HHHack Apr 27 '18 at 07:40
  • Имхо, вопрос закрыт неправильно. Он не про доступ к GUI из другого потока, а про работу с BindingList (который, оказывается, не позволяет это напрямую). – Alexander Petrov Apr 27 '18 at 09:52
  • Посмотрите в этой теме ответы bporter и Marc Gravell. – Alexander Petrov Apr 27 '18 at 09:54
  • Кого это волнует, GUI не GUI, есть слово поток, то дубликат =D – HHHack Apr 27 '18 at 10:41
  • Ответ от Marc Gravell похоже то, что я искал, спасибо. – HHHack Apr 27 '18 at 10:44

0 Answers0