Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Многопоточность и доступ к разделяемому ресурсу |
Автор: botusai 24.9.2007, 13:34 | ||
Вот такая задача: у меня в программе есть много потоков и каждый должен вывести свои аргументы в (внимание!!) TextBox на форме, подскажите плиз как это делать. пробовал и Mutex и lock , ничего не помогло. Вот код, правда уже местами переделанный, но лишнее убрано.
|
Автор: 0000 24.9.2007, 15:22 | ||||||
к примеру у тебя есть Form1 form; объявляешь делегат
есть метод, который изменяет твой контрол
а так же есть открытый метод, доступный из других потоков (там можно, например, реакцию на событие использовать, если хочешь промежуточные результаты давать или еще что-нибудь)
теперь у тебя запущен отдельный поток, который обновляет данные в текстбоксе.. я правильно понял что надо было?? ЗЫ. используй подсветку кода - удобнее |
Автор: botusai 24.9.2007, 16:05 |
вооюще-то я хотел спросить про создание критической секции, так чтобы в каждый момент времени только какой-то один поток имел доступ к текстбоксу, т.е как бы внутри потока находится метод изменения текста в текстбоксе |
Автор: 0000 24.9.2007, 16:25 |
так в изменении текстбокса можешь его лочить... а внутри потока ты вызываешь publicAppendText... или делегат на него, если до формы далеко =) а еще лучше события.. Calculator.OnPerform..обработчик его в форму и там доступ к текстбоксу |
Автор: zaver 24.9.2007, 17:36 |
Блин! прикрепите тему про Invoke! каждая пятая тема про это. ------- а сори, увидел, уже прикреплено ![]() |
Автор: botusai 25.9.2007, 11:10 |
0000 большое тебе спасибо |
Автор: 0000 25.9.2007, 11:31 | ||||||
контролом управляет только поток, его создающий...угу... тогда зачем различать BeginInvoke и Invoke
тогда какая разница между методами, если контрол создается в главном потоке? |
Автор: tol05 25.9.2007, 11:42 | ||||
рефлектор есть?
как мы видим, отличие в последнем параметре. Смотрим что за параметр
Таким образом, разница указана уже в названии методов... P.S. Invoke посылает запрос в поток контрола и курит, останавливаясь и ожидая окончания его выполнения BeginInvoke посылает запрос в поток контрола и продолжает выполнять свой код |
Автор: 0000 25.9.2007, 14:30 |
ага..то есть поток контрола считаем отдельно от главного...вот тут у меня непонятки и были..все, ясно, снекс |