![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Loncaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
Вообщем суть вопроса такова: есть программа, и она при записи берет из инета кое-какую инфу и выводит ее на форме. Так вот эта операция занимает где-то 8 секунд времени. Сейчас указатель мыши просто принимает форму часов и прога ждет пока получиться инфа, а Я хочу сделать так, чтобы юзер наболюдал в это время не часы и прогресс бар, который будет шагать до тех пор, пока не получиться инфа из инета...воот, как бы Мне такое сделать?
--------------------
Ще не вмерла Україна... |
|||
|
||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 1 Всего: 62 |
Пусть таймер каждую секунду увеличивает значение прогрессбара.
|
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Loncaster, а собственно говоря что непонятно? кидаешь прогресс на форму и репортишь из него прогресс.
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Loncaster, во первых (самое главное) тебе нужно выделить загрузку инфы в отдельный поток
Только таким образом ты уберешь с формы эти часы А потом из потока будешь обращаться к прогрессБару. System.Threading тебе в помощь, либо (что проще, но, ИМХО, менее прозрачно) компонент BackgroungWorker |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Зачем поток, в WinForms логичнее использовать таймер - по крайней мере, обработка события Timer.Elapsed выполняется в основном потоке формы и не нужны проверки на Form.IsDisposed, Form.InvokeRequired, вызов через Invoke...
-------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
mr.DUDA, а разве загрузка инфы не потянет все процессорное время формы?
Так что оно даже не сможет реагировать на события пользователя. |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
mr.DUDA, присоединяюсь к вопросу ivashkanet...
|
|||
|
||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 1 Всего: 62 |
ivashkanet
Да. Я думал что поток уже есть... но видимо придётся делать по сложному с Invok'ами. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Не оязательно по-сложному Есть стандартный компонент (FW 2.0) BackgroungWorker. Через него ИМХО, будет проще организовать "общение" с формой. Хотя он и менее прозрачен (по принципам работы), чем просто поток. Вся прелесть его в том, что это компонент самой формы, а работу ведет в отдельом потоке |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Хм, если обработчик занимает много времени, то действительно лучше поюзать потоки. Просто не обратил внимания на постановку вопроса, сорри.
-------------------- ![]() |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
Loncaster, так. Я там немного не то написал. Сначала кидаешь прогресс-бар на форму. Потом туда же BackgroundWorker. В Worker забиваешь твою задачу и периодически репортишь прогресс. На эвент воркера прогресс репортед стави новление прогресс бара.
|
|||
|
||||
| Loncaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
Ребята, возникла пробелма с потоками
Вообщем создал Я поток и процесс там выполняется, только вот загвоздка в том, как передать данные форме?
Вот код потока..так вот сейчас все отлично работает, но Мне нужно data не в MessageBox показать, а присвоить его определенному своейству формы MainForm. А оно не видет например labels формы и т.д.... --------------------
Ще не вмерла Україна... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Можно вытащить нужные свойства из формы наружу, и предоставить потокобезопасный доступ к ним, например:
Тогда обращаться к свойству Progress можно из любого потока в любом классе, где известна ссылка на форму - как например в методе thr.run(). -------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Оно то да, хорошо, но пргресса ты, естественно, не увидешь, ведь ты только один раз устанавливаешь значение -- когда все данные загружены полностью Надо как-то попытаться достать прогресс из метода traff.getTraffic(bill.login,bill.pass). Если нельзя, то менять его на аналог. P.S. mr.DUDA, сколько уже смотрю на похожие методы --- не прозачно (Напоминает танцы с бубном (два раза влево помахать, один раз хлопнуть...) Хотя сегодня все намного понятнее, чем раньше |
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 1 Всего: 6 |
Ещё вопрос. Зачем вообще в прогрессбаре есть свойство ForeColor? Каким бы его ни выставляли, полоса всё равно зелёная. А если я хочу, чтобы она была красная? Или за что вообще отвечает ForeColor?
-------------------- 3 ГОДА НА |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |