Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
1 | |
Запуск операции(функции, метода) из основного потока21.10.2018, 12:24. Показов 1349. Ответов 25
Выполняю считывание данных через WebSocket, данные попадают в инфраструктуру проекта и обрабатываются, потом добавляются в коллекцию. Во время работы, используется многопоточность, но как так необходимо отображать данные коллекции на форме я вывоху их через DataGridView.DataSource = List<...>. Данные при обработке не добавляются когда открыта форма, значит коллекция блокируется на добавление ожидает повторной привязки. Подскажите как вызвать определенный метод, например Add - добавлении данных в коллекцию в UI потоке?
0
|
21.10.2018, 12:24 | |
Ответы с готовыми решениями:
25
Вызов SaveFileDialog не из основного потока Запись в Textbox не из основного потока Вызов основного потока из фонового Доступ к элементу управления не из основного потока |
21.10.2018, 12:56 | 2 | |||||
kingzfate, здесь, наверное, нужно перед привязкой запрашивать InvokeRequired() и потом делать эту операцию в потоке UI.
Что-то типа такого:
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
21.10.2018, 13:04 [ТС] | 3 |
ashsvis, привязка выполняется в UI потоке, а добавление данных не в UI, мне нужно именно добавление!
0
|
53 / 52 / 36
Регистрация: 25.05.2015
Сообщений: 162
|
|
21.10.2018, 13:21 | 4 |
какая форма? Главная или дочерняя?
А можно полный код функции, так будет более понятно, что у вас там делается
0
|
53 / 52 / 36
Регистрация: 25.05.2015
Сообщений: 162
|
|
21.10.2018, 13:38 | 6 |
Но на метод всё равно надо взглянуть
0
|
21.10.2018, 13:41 | 7 | |||||
Вот Вам метод:
0
|
53 / 52 / 36
Регистрация: 25.05.2015
Сообщений: 162
|
|
21.10.2018, 13:43 | 8 |
я бы сделал через Task async await. А как у вас сделана многопоточность?
0
|
21.10.2018, 13:47 | 9 | |||||
0
|
53 / 52 / 36
Регистрация: 25.05.2015
Сообщений: 162
|
||||||
21.10.2018, 13:54 | 10 | |||||
а не пробовали так:
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
21.10.2018, 14:33 [ТС] | 11 |
ashsvis, какая разница какой метод, он выполняется от сокета, сокет я просто перенаправляю туда для выполнения добавления данных в коллекцию. Открытие у меня в 1 потоке, редактирование в 8, добавление в 14-15
Добавлено через 38 секунд iichi_kohuro, Я не жду ответа от метода он выполняется бесконечно по мере поступления данных Добавлено через 1 минуту iichi_kohuro, форма дочерняя, код добавления данных в лист и привязки к DataGridView вам интересен?
0
|
53 / 52 / 36
Регистрация: 25.05.2015
Сообщений: 162
|
||||||
21.10.2018, 15:01 | 12 | |||||
Да, надо посмотреть что там.
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|||||||||||||||||||||
22.10.2018, 07:18 [ТС] | 13 | ||||||||||||||||||||
iichi_kohuro, к сожалению ваш способ тоже не работает
Вот так я открываю форму с DataGridView
0
|
163 / 153 / 33
Регистрация: 05.03.2013
Сообщений: 875
|
|
22.10.2018, 07:31 | 14 |
Сделайте List статическим и добавляйте данные в него откуда хотите.
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
22.10.2018, 07:46 [ТС] | 15 |
Козадоев, данные я могу добавить, никаких ошибок нет, они не отобразятся попросту на форме до перезагрузки
0
|
163 / 153 / 33
Регистрация: 05.03.2013
Сообщений: 875
|
|
22.10.2018, 07:50 | 16 |
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
22.10.2018, 07:52 [ТС] | 17 |
Козадоев, Просто Add в DataGridView когда есть привязка DataSource? Ну это извращение я уже пробовал и поэтому хочу уйти от него
0
|
163 / 153 / 33
Регистрация: 05.03.2013
Сообщений: 875
|
|
22.10.2018, 07:55 | 18 |
Вы когда форму перезагружаете, данные ведь обновляются. Также и по таймеру можете обновлять, при этом DataGridView будет привязанным.
0
|
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
|
|
22.10.2018, 07:59 [ТС] | 19 |
Козадоев, ну там просто идет новое программное создание DataGridView и новая привязка, если так делать по таймеру, все будет мигать и мне кажется этот способ лишь заплатка но не решение
0
|
163 / 153 / 33
Регистрация: 05.03.2013
Сообщений: 875
|
|
22.10.2018, 08:02 | 20 |
Достаточно прост перепривязать. Пересоздание DataGridView для обновления данных не нужно.
0
|
22.10.2018, 08:02 | |
22.10.2018, 08:02 | |
Помогаю со студенческими работами здесь
20
Запуск метода из другого потока Запуск метода с аргументом в два потока Выполнение слота основного потока через сигнал второстепенного потока Запуск потока для функции с параметрами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |