Страница: 1 | 2 |
Вопрос: Пауза
Добавлено: 21.01.11 01:13
Автор вопроса: Nezhniy | Web-сайт:
Ответы
Всего ответов: 27
Номер ответа: 16
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #16
Добавлено: 21.01.11 18:22
uNicO*, я тебе советую рассмотреть вариант с запуском потока, а не использовать костыли вроде того, который ты видишь в 11-м сообщении.
Номер ответа: 17
Автор ответа:
Nezhniy
ICQ: 419841508
Вопросов: 9
Ответов: 100
Web-сайт:
Профиль | | #17
Добавлено: 21.01.11 18:33
Artyom, через System.Threading.Thread.Sleep я пробовал ,создавал новый поток, туда засовывал процедуру, у меня картинки не успевают отображаться почему то, я описывал это в предыдущих сообщениях( в нубском варианте у меня все нормально ,то что мне нужно , насчет UI я не знаю что это , я еще юн и неопытен ) в мсдне не вижу объяснения. может быть все таки просто связать с способами time которые ты предложил ?
Номер ответа: 18
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #18
Добавлено: 21.01.11 20:06
Почему этот код нубский тебе объяснил еще один умнейший дотнетчик в посте 13, который правильно расставляет отступы в коде. Но в твоем случае он вполне подойдет, ибо ты пишешь не систему координации спутников GPS или управления атомной электростанции. Тебе просто нужнен код который работает. При этом я сомневаюсь в том, что этот код будет использован в промышленной системе или еще где нибудь, где описанные в посте 13 последствия будут существенными. Поэтому на всякие переходы на летнее время/смену часового пояса/синхронизацию часов/падение метеорита в голову пользователю можно смело забивать. Если поток пробовал, то дай код с потоком, разберем.
PS: Ниже может следовать пост про то что говнокод запрещен конституцией и все сразу по умолчанию должны знать потоки, незащищенный код, делегаты и прочую хрень, а более кривые, но простые способы просто не имеют право на существование, потому что я так прочитал в статье в интернете/книжке/знал с рождения. На него тоже не стоит обращать внимание.
Номер ответа: 19
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #19
Добавлено: 21.01.11 20:31
Я бы использовал Stopwatch.
Номер ответа: 20
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #20
Добавлено: 21.01.11 20:33
Можно, если интерфейс не будет подвисать.
Номер ответа: 21
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #21
Добавлено: 21.01.11 20:52
VBD, ты не прав.. Не надо перетаскивание говнокода из VB6 прикрывать простотой и доступностью, это совсем не в тему. Да,он был актуален в VB6 ввиду отсутствия потоков, но в НЕТ делать подобное - это реально УГ. И даже без учетов перехода времени и прочих причин, названных коллегой ранее, этот код не даст гарантированной задержи по времени - это раз. Во-вторых,если в цикле достаточно долгие операции то погрешность на разных компах может достигать чудовищных величин.
Номер ответа: 22
Автор ответа:
Nezhniy
ICQ: 419841508
Вопросов: 9
Ответов: 100
Web-сайт:
Профиль | | #22
Добавлено: 21.01.11 21:58
пфф , я запутался , скажите тогда через что лучше делать чтоб не было погрешности , там Artyom говорил про DateTime.UtcNow, Environment.TickCount , что лучше ? то что с новым потоком, я пробовал , виснут картинки, а там через UI какой то , я в этом к сожалению пока не понимаю.
Номер ответа: 23
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #23
Добавлено: 21.01.11 22:23
VBD, ты не прав.. Не надо перетаскивание говнокода из VB6 прикрывать простотой и доступностью, это совсем не в тему. Да,он был актуален в VB6 ввиду отсутствия потоков, но в НЕТ делать подобное - это реально УГ. И даже без учетов перехода времени и прочих причин, названных коллегой ранее, этот код не даст гарантированной задержи по времени - это раз. Во-вторых,если в цикле достаточно долгие операции то погрешность на разных компах может достигать чудовищных величин.
Хорошо, тогда объясняй потоки сам.
Номер ответа: 24
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #24
Добавлено: 21.01.11 23:11
Если ты собираешься юзать говнокод, то даже не думай о погрешности.. бери и используй как есть. Если же время задержки имеет значение,то надо делать вызов процедур в отдельном потоке.
Номер ответа: 25
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #25
Добавлено: 21.01.11 23:58
Nezhniy, покажи свой код и найдем где есть проблема.
Номер ответа: 26
Автор ответа:
Nezhniy
ICQ: 419841508
Вопросов: 9
Ответов: 100
Web-сайт:
Профиль | | #26
Добавлено: 22.01.11 01:05
Вот когда я такой код делаю, у меня не успевают отображаться labelы когда перемешиваются, он уже делает паузу. При нубском же коде такого нет , все как надо.
Номер ответа: 27
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #27
Добавлено: 22.01.11 03:09
Ок, теперь расскажи что ты хочешь сделать? Как по твоему должна выглядеть работа приложения? Я не понимаю смысл запуска отдельного потока в этой задаче и смысл задержки
Во-первых, вызов делается через System.Threading.Thread.Sleep, а не так как ты показал. Sleep это Shared метод, и он не принадлежит какому-то экземпляру. Тот факт что VB позволяет вызывать Shared методы, обращаясь к экземпляру это только бонус, который, возможно, сбил тебя с толку. Усыпляется тот поток, котоырй вызывает метод Sleep, т.е. в данном случае - UI поток.
Это первое. Второе - ты из нового запущенного потока управляешь свойствами элементов управления. Это нужно делать через Control.Invoke/Control.BeginInvoke, поскольку обращаться к контролам можно только из потока, который их и создал.