![]() |
Модераторы: diadiavova, gambit |
![]() ![]() ![]() |
|
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Такой код
А как правильно переписать этот код ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 5 Всего: 149 |
Нужно на форме написать метод "Запись в txtView" и обратиться к нему через
Это сообщение отредактировал(а) ivashkanet - 7.6.2006, 17:44 |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Многие элементы WinForms не являются безопасными по отношению к потокам. Поэтому обращаться к ним можно только из того потока, в котором они были созданы. Если нужно обратиться из другого потока, проверяй свойство InvokeRequired и вызывай метод Invoke с передачей делегата на метод, который нужно выполнить - контрол его вызовет сам:
Впрочем, разумнее для этих целей воспользоваться компонентом BackgroundWorker, который инкапсулирует эту функциональность. Добавлено @ 17:47 FAQed. http://vingrad.ru/NET-VBNET-003045 Добавлено @ 17:49 |
|||
|
||||
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
||||
|
||||
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Заработало следующее:
Всем спасибо. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
В таком случае правильнее воспользоваться специально для этого предназначенным делегатом MethodInvoker:
|
|||
|
||||
Pankon |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
Exception, спасибо за участие
![]() Я тут внимательно почитал про InvokeRequired :
Я вызываю метод элемента из другого потока и проверка(If txtView.InvokeRequired Then), что элемент из другого потока - лишняя(если, конечно, не вызывать метод ThreadVBNET() из главного потока ![]() И я так понял, что конструкцию txtView.Invoke(New MethodInvoker(AddressOf DoSomeActions)) (см. Exception) нужно(желательно) вызывать для каждого обращения к методам елемента из другого потока.(Exception твой последний вариант так "грузит" приложение, что оно не на что не реагирует ![]()
Вот то, что, по моему, оптимально должно работать (по крайней мере у меня работает ![]()
Если кто-то найдет не точности в рассуждении или в коде - милости просим, поделитесь.. Уж очень хочется разобраться, а не просто примеры из книжки использовать, а так же знать и понимать, что пишу....... ![]() Это сообщение отредактировал(а) Pankon - 8.6.2006, 10:52 |
||||||||
|
|||||||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
||||
|
||||
Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: нет Всего: 5 |
||||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
System.Threading.Monitor.Enter() и System.Threading.Monitor.Exit() должны помочь.
Добавлено @ 18:05
|
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 5 Всего: 149 |
||||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
||||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 7 Всего: 61 |
||||
|
||||
![]() ![]() ![]() |
Правила форума VB .NET | |
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |