![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
botusai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
Вот такая задача: у меня в программе есть много потоков и каждый должен вывести свои аргументы в (внимание!!) TextBox на форме, подскажите плиз как это делать. пробовал и Mutex и lock , ничего не помогло. Вот код, правда уже местами переделанный, но лишнее убрано.
Это сообщение отредактировал(а) botusai - 25.9.2007, 17:41 |
|||
|
||||
0000 |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: 2 Всего: 5 |
к примеру у тебя есть Form1 form;
объявляешь делегат
есть метод, который изменяет твой контрол
а так же есть открытый метод, доступный из других потоков (там можно, например, реакцию на событие использовать, если хочешь промежуточные результаты давать или еще что-нибудь)
теперь у тебя запущен отдельный поток, который обновляет данные в текстбоксе.. я правильно понял что надо было?? ЗЫ. используй подсветку кода - удобнее Это сообщение отредактировал(а) 0000 - 24.9.2007, 15:22 |
||||||
|
|||||||
botusai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
вооюще-то я хотел спросить про создание критической секции, так чтобы в каждый момент времени только какой-то один поток имел доступ к текстбоксу, т.е как бы внутри потока находится метод изменения текста в текстбоксе
|
|||
|
||||
0000 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: 2 Всего: 5 |
так в изменении текстбокса можешь его лочить...
а внутри потока ты вызываешь publicAppendText... или делегат на него, если до формы далеко =) а еще лучше события.. Calculator.OnPerform..обработчик его в форму и там доступ к текстбоксу Это сообщение отредактировал(а) 0000 - 24.9.2007, 16:27 |
|||
|
||||
zaver |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: нет Всего: 3 |
Блин! прикрепите тему про Invoke! каждая пятая тема про это.
------- а сори, увидел, уже прикреплено ![]() Это сообщение отредактировал(а) zaver - 24.9.2007, 17:37 |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
о чем вы, господа девелоперы? Кого от кого лочить??? ![]() Почитайте мануалы, Invoke посылает команду на вызов метода В ПОТОК КОНТРОЛА. Сколько бы потоков не вызывало Invoke "для обновления текстбокса" ![]() Именно этим методом Invoke() как раз и гарантируется потокозащищенность винформс-контролов.
:( -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
botusai |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 24.9.2007 Репутация: нет Всего: нет |
0000 большое тебе спасибо
Это сообщение отредактировал(а) botusai - 25.9.2007, 11:10 |
|||
|
||||
0000 |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: 2 Всего: 5 |
контролом управляет только поток, его создающий...угу... тогда зачем различать BeginInvoke и Invoke
тогда какая разница между методами, если контрол создается в главном потоке? |
||||||
|
|||||||
tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
рефлектор есть?
как мы видим, отличие в последнем параметре. Смотрим что за параметр
Таким образом, разница указана уже в названии методов... P.S. Invoke посылает запрос в поток контрола и курит, останавливаясь и ожидая окончания его выполнения BeginInvoke посылает запрос в поток контрола и продолжает выполнять свой код Это сообщение отредактировал(а) tol05 - 25.9.2007, 12:50 -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
0000 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: 2 Всего: 5 |
ага..то есть поток контрола считаем отдельно от главного...вот тут у меня непонятки и были..все, ясно, снекс
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |