.NET 4.x Как прервать цикл while при нажатии на кнопку выход09.11.2012, 09:21. Показов 10319. Ответов 17
Метки нет (Все метки)
Я делаю программу, и мне надо когда пользователь нажмет на кнопку "начать работу!!" программа повторно выполняла действия в while, я делала вечный цикл(while(true)), но программу после первого круга прохода по цыкла зависала. Я Думаю надо что цикл while выполнял пока пользователь не нажмет на кнопку выход. Как это можно сделать?
0
|
|||||||
| 09.11.2012, 09:21 | |
|
Ответы с готовыми решениями:
17
Прервать цикл при нажатии определённой клавиши, а если не нажали - то продолжать его
|
| 09.11.2012, 09:34 | |
|
Не по теме:
0
|
|
|
46 / 46 / 19
Регистрация: 15.03.2009
Сообщений: 178
|
|
| 09.11.2012, 09:35 | |
|
Чтобы процесс while не подвисал, нужно запустить его в отдельном потоке.
Воспользуйся backgroundWorker.
0
|
|
| 09.11.2012, 09:37 | |
|
Не по теме: Как правильно писать вопросы. ч.2
1
|
|
|
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
|
|
| 09.11.2012, 10:03 | |
|
у тебя и интерфейс и цикл висят в одном потоке, соответственно, все выполняется по-очереди (образно говоря, как в процедурных языках - сверху вниз). Т.е. сначала ты нажал кнопку, потом запустился цикл, и после него должна быть нажата другая кнопка, только, когда цикл завершится. Чтобы параллельно выполнить оба действия, нужно запустить их в разных потоках. Можешь воспользоваться BackgroundWorker, а еще лучше почитать про потоки в хорошей книжке. Можно через System.Threading - многие говорят, что он лучше, чем worker, но в этом случае через invoke прийдется с формой общаться. В общем, если хочешь хорошо разобраться - потоки и гугл в помощь. Пары часов для охвата минимума хватит.
0
|
|
| 09.11.2012, 13:44 [ТС] | |||||||
|
smth, а можно по подробней как это сделать
Добавлено через 3 часа 32 минуты Подскажите плиз,как сделать два потока с помощью BackgroundWorker. Покажите на примере, если не сложно
0
|
|||||||
|
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
|
||||||
| 09.11.2012, 17:55 | ||||||
|
я не пользуюсь worker'ом, привык к обычным потокам.
Вот по нему пример http://msdn.microsoft.com/ru-r... kz4s1.aspx, втора ссылка из гугла. Вспомнил, почему я его не использую - он мне по функционалу не подошел раз, только не помню уже, в чем проблема была. Вот, нашел тут, когда сам изучал, комментариев нет, к сожалению. Если прочитаешь про потоки - поймешь, а объяснять то, чего ты еще не знаешь - только время терять. Суть в том, что в отдельном потоке раз в пол секунды отправляется в форму строка, и форма эту строку отображает. Просто так передать в форму строку нельзя, для этого используется Invoke - об этом тоже много инфы на первой-второй ссылке гугла (по запросу InvokeRequired).
0
|
||||||
|
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
|
|
| 09.11.2012, 18:53 | |
|
Psilon, я ж написал - пример искусственный. Что в голову пришло, то и написал. Задача стояла не "передать в форму событие", а "передать что-то из потока в форму".
1
|
|
|
10 / 10 / 2
Регистрация: 02.11.2012
Сообщений: 65
|
||||||
| 09.11.2012, 21:18 | ||||||
|
проще
0
|
||||||
|
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
|
|
| 10.11.2012, 12:31 | |
|
Sylar9, я теряюсь в догадках, что ты имел в виду, поэтому даже не знаю, что ответить. С другой стороны, все уже разжевано, пример дан. Больше в этой теме не буду писать, гугли
System.Threading и InvokeRequired Приложи хоть немного усилий, тебе уже в рот все положили, осталось проглотить. Не понимаешь, в каком порядке что происходит - запусти пошаговую отладку. Все, адиос.
0
|
|
|
10 / 10 / 2
Регистрация: 02.11.2012
Сообщений: 65
|
|||||||
| 11.11.2012, 18:34 | |||||||
0
|
|||||||
| 12.11.2012, 09:51 [ТС] | |
|
nurz, Ваш способ не работает. я Понял почему подвисает программа, потому что я пользуюсь функций Sleep(); Мне надо задержать выполнение действия на 3мин. Я заметил что когда функция Sleep(); тогда и подвисание. Пробувал функцию Timer, но он почему после выхода из программы продолжает работать. Может вы мне подскажите какуе-то функцию
0
|
|
| 12.11.2012, 09:51 | |
|
Помогаю со студенческими работами здесь
18
Закрытие формы при нажатии кнопку выход Изменить содержимое дива при нажатии на кнопку - авторизация и выход
Реализовать один цикл анимации при нажатии на кнопку Как прервать цикл при вводе 0, и начать расчет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|