![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
всем доброй ночи... вопрос таков... как реализовать задержку программы?... юзал Thread.Sleep(sleep_Time); но мне необходимо запустить на время задержки таймер... если его поставить до слипа, то он тупо простаивает... а после смысла ставить нет... нид хелп....
Это сообщение отредактировал(а) Sfate - 17.10.2009, 22:33 --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
очевидно их нужно разделить на два потока, запускаешь свой таймер в отдельном потоке и основной поток переводишь в Sleep. потом, когда придет время, второй поток должен "разбудить" первый.
p.s. а для чего если не секрет такие сложности? запускать таймер по засыпанию основного потока. как то не понятно. |
|||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
а можно слегка пояснить, точнее
та не секрет --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
про потоки это тут. но мне кажется что можно сделать проще, просто задача до конца не понятна(мне))). а зачем глушить основной поток? запускай в нем таймер и все.
|
|||
|
||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Вообщето по моему то что говорит Экскалупатор это правильнее.
Честно говоря я побаиваюсь ему перечить Но если твоей дуще так хочеться а телу лень код переписывать, то сделай что то вроде. Бесконечного цикла с проверкой условия, в отдельном потоке.
Is_Stop сделай неизменяемым атомарным типом значения, тогда не надо будет париться с синхронизацией. Поток правда будет всё время подгружен, но думаю ты это сильно не ощутиш)))) -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
я не страшный, и не претендую на абсолютность мнения... |
|||
|
||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
It was the joke
-------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
KuMa1104, боюсь как бы не вышел подгруз системы... с while наверно не выйдет...
Экскалупатор, ну как еще обьяснить не знаю... даж... просто нужно чтобы форма показывалась и ,к примеру, показывалась анимация пока идет подкление, но еще нужно чтобы следующее действие выполнилось только после выполнения подключения... поэтому поставил слип... --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
Sfate, ну в принципе вроде все понятно. можно сделать через BackGroundWorker, по сути это тот же отдельный поток. в основном потоке создавай этот класс, потом запускай его и показывай в нем пользователю анимацию, а в основном потоке выполняй соединение, как только соединение установиться тогда убивай BackGroundWorker, и продолжай работу в основном потоке.
|
|||
|
||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
Экскалупатор, ок... вечерком попробую... отпишу... спс;)
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
| IGV |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 1.4.2008 Репутация: 1 Всего: 2 |
попробуйте использовать backgroundworker как сказал, товарищч Экскалупатор, а для двух операций, каждая из которых будет выполняться в отдельном потоке используйте оператор lock.
Т.е. через backgroundWorker1.RunWorkerAsync() вы запускаете свои операции. Они запустятся в отдельном потоке, поэтому на форме в это время вы можете отображать всё, что хотите. Далее запускаете в первом потоке операцию подключения и в ней блокируете какой-либо объект через lock, конечно лучше всего сам connection. А в другом потоке совершенно спокойно обращаетесь к этому connection'у (он будет ожидать пока этот объект не будет разблокирован в первом потоке). Вот и всё. Подробнее прочитайте здесь |
|||
|
||||
| KuMa1104 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Sfate это просто для справки)
У каждого потока есть своё процессорное время. Поэтому поток вызванный в главном при нормальных условиях не заставит подвиснуть главный поток.
Добавлено через 2 минуты и 3 секунды Просьба не ругать, если написал что то не точно. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |