![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Так получилось, что с многопоточностью работать не приходилось.
В одном классе есть две функции. Из одной происходит вызов второй, в которой надо открыть поток и получать доступ к нескольким элементам управления. А то я получаю исключение всё время, мол "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'такому-то' не из того потока, в котором он был создан." Я быстро пролистал тему многопоточности, потыкался, но что-то пока не получается. А мне надо срочно решить эту проблему. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 3 Всего: 18 |
||||
|
||||
| A5uKa |
|
|||
|
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
... ? п.с. но его Invoke лучше ) Это сообщение отредактировал(а) A5uKa - 18.3.2010, 11:14 |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Спасибо. Но до меня никак не допрёт...
Я не пойму как использовать тут InvokeRequired, а затем Invoke() с делегатом, в который надо засунуть метод и из него вернуть каким-то образом значение текстбокса, чтобы присвоить его переменной term. Как это сделать с BackgroundWorker тоже не пойму))) Я чисто не могу представить себе конструкцию. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
Что то типа:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
ДобренькийПапаша, простите, но я чего то не понимаю... Насколько я знаю, контроллы должны быть в основном потоке. Если это так, то с доступом к контроллу не должно быть особых проблем. Не опйму, зачем в таком случаи импортировать "user32.dll"? Хотя, если это WPF, то там решается немножко по другому. А если у вас контроллы в разных потоках (это вообще возможно?), то у вас как минимум ошибка в проектировании.
|
|||
|
||||
| ДобренькийПапаша |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Снова открою тему, так получилось, что мне пришлось запускать метод асинхронно:
До этого я метод ParseFileToLineChart() запускал синхронно с помощью класса Thread, тогда внутри метода конструкция
работала нормально. А теперь выполнение на этом месте "застревает". Заменил Invoke(...) на BeginInvok():
так работает нормально. Объясните почему так происходит? Типа если там асинхронный вызов, то и внутри тоже надо асинхронно? -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||||
|
|||||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Таки нет. Неприятности остаются. В потоке, который запускаю через делегат, присутствуют несколько BeginInvoke() (в блоках InvokeRequired). Из-за особенностей асинхронного исполнения (как я понял), у меня в неправильной последовательности (для меня неправильной\некорректной с точки зрения логики) выполняются инструкции. Можно ли как-то управлять этим процессом? То есть завершить определённые действия в блоке InvokeRequired, чтобы выполнение шло дальше только после выполнения инструкций в блоке InvokeRequired.
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |