![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Alfmaster |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Изучаю .net. Решил поэксперементировать с многопотчностью. Кинул на форму кнопку и лэйбл. По нажатию кнопки создается поток, в котором вызывается метод, в цикле меняющий текст лэйблы на значение перемнной цикла. Мне выдало ошибку, что нельзя использовать компонент, созданый в другом потоке. Я исправил все, как было написано в MSDN (создал в новом потоке делегат, связал его со своим методом и вызвал через form.BeginInvoke()). Работает, но пока метод не выплниться - нельзя ничего делать с формой. Внимание, вопрос: как сделать новый поток фоновым, то есть чтобы у меня была возможность клацать другие кнопки, пока лэйбла меняет свои значения??
Это сообщение отредактировал(а) Alfmaster - 26.9.2008, 00:05 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
1. Контролы можно менять только в основном потоке, нажимать на них и прочими образами взаимодействовать со стороны юзера - тоже
2. BeginInvoke переводит выполнение из созданного тобой потока в основной 3. Ты в цикле непрерывно опосредованно нагружаешь основной поток 4. Основной поток на то и основной, чтобы быть одним, так что с твоей нагрузкой никакие другие пользовательские операции будут практически недоступны Попробуй нагружать основной поток поменьше, ну в самом деле - зачем тебе сотни раз в секунду обновлять лабел? Вставь в тело цикла Thread.Sleep(500); |
|||
|
||||
| Alfmaster |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 20.9.2008 Репутация: нет Всего: нет |
Справился с проблемой.
stmet() вызывается во вторичном потоке. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |