![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
VisualProgrammerNET |
|
||||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Суть басни:
создаю поток а-ля
метод MyVoid в свою очередь обращается к Label на форме и меняет там значение Text. Но приложение работать не будет, ибо
использовать нельзя. Вопрос. Как это сделать? Пробовал совать в разные места кода lock {}, но так ничего и не добился... ![]() -------------------- 3 ГОДА НА ![]() |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Есть такой метод, называется Control.Invoke... Принимает делегат на любой метод, и вызывает этот метод в GUI-потоке приложения. Есть ещё свойство Control.InvokeRequired - возвращает true, если вызвающий его код работает не в GUI-потоке.
-------------------- ![]() |
|||
|
||||
Wanderer2019 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: 7 Всего: 17 |
тоже пытался разобраться. Особенно на 2005 вообще со всем этим делом жесть!
Там появился какой то инструмент работы с потоками. Как работает тоже не понял. Но на первый взгляд так делать надо так. Напрямую работать с контролами нельзя. Необходимо работать через дополнительные функции. Т.е. из потока вызываем функцию, которая в свою очередь обращается к свойствам контрола. Вообщем присоединяюсь к вопросу =) Хотя в 2003 вышеописанный код должен сработать. Добавлено @ 22:48 mr.DUDA, ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
mr.DUDA дело говорит.
|
|||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Я понимаю, что дело, но
![]() ![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
1. Проверяй значение Control.InvokeRequired
2. Если false, можешь обращаться к свойствам напрямую 3. Если true, передаешь методу анонимный делегат, меняющий значение Примерно выглядит так:
|
|||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Эк как всё хитро задумано...
![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Exception, жжош
![]() В 2003-й лямбда-функций нет, поэтому там будет вот так:
-------------------- ![]() |
|||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Продолжение басни.
А что если есть некий класс, например, рисующий кружочек. ![]()
При дебагге (ставил брейкпойнт на c.DoAction();), ход приложения запарывается как раз на этой строке. Без ошибок, без всего. Просто ничего не происходит с кружочками... Но Invalidate выполняется. В чём беда? Это сообщение отредактировал(а) VisualProgrammerNET - 2.4.2006, 13:53 -------------------- 3 ГОДА НА ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Можно все-таки код посмотреть полностью? Мало что понятно из этого куска.
|
|||
|
||||
VisualProgrammerNET |
|
||||||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Ммм... ща постараюсь выдрать то, что относится к этой части программы...
Собсна, это класс-кружочек
Там ещё многое нуждается в доработке, да... ---------------------- Вот код главной формы (управляющей)
---------------------- А это LocationForm, где отрисовывается и двигается классы-кружочки
Много мусора в коде, да =) Ещё только в начале пути... -------------------- 3 ГОДА НА ![]() |
||||||
|
|||||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Неужели совсем ничего нельзя сделать с этой штукой?
![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
VisualProgrammerNET, маньяк убийц0
![]() -------------------- ![]() |
|||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
![]() Это да, но что с проблемой делать? ![]() Можно ли как-нибудь сделать, чтобы класс поддерживал метод Invoke? ![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Чего-то у меня совсем голова не варит. Можно ещё раз разжевать проблему и чуточку поконкретнее код (а мусора и правда много)..
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |