![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| AGENTxXx |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Всем привет! Вот такая задача: нужно чтобы курсор мыши двигался с задержкой (ну я зам указываю куда нужно курсор переместить). Так вот, Sleep() не подходит потому что во время движений курсора нужен доступ к форме (ну например курсор не правильно пошел и нужно выйти из проги). Т.е. в итоге должно получиться: курсор бегает с задержкой, а с формой можно работать тем временем. Проблема в том что у меня не получилось это реализовать с таймером, и так и сяк.... он бегает но без задержек((( пробывал в другой поток занести движение курсора, но выдовалась ошибка, так как первый поток проходил нормально, ну который создался новый, а 2-й раз когда запрашивалось туда обращение уже выходила ошибка, ругалось на то что не правильное обращение или поток уже существует... А алгоритм у меня с потоками был такой: вызываю вот этот дополнительный поток, а в нем просто sleep() делаю и все. Но думаю что можно гораздо проще. Вот код:
Так же могу привести мою модификацию, где пробывал через поток:
Пробывал еще с таймером но тоже дохлый номер, думаю пользы приводить пример нет, но если надо, то приведу. А так, прошу вот помощи у знающих людей. Пожалуйста, помогиче чем можете! |
||||
|
|||||
| Sfate |
|
||||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
самый простой способ выполнять метод периодически – использовать таймер, например класс Timer из пространства имен System.Threading... этот таймер использует пул потоков, допуская создание множества таймеров без накладных расходов в виде такого же количества потоков... Timer – довольно простой класс с конструктором и парой методов...
в следующем примере таймер вызывает метод Tick, который печатает "tick..." по истечении 5 секунд и далее каждую секунду, пока пользователь не нажмет Enter:
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
||||
|
|||||
| AGENTxXx |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Спсибо за совет! Вещь дельная, согласено, но я не понял как она действует млин. Вот, пишу например:
Тут меня все устраивает. Через секунду записал 1 единицу. Написал так:
По идее здесь должен быть бесконечный цикл где каждые 50 миллисекунд должна дописываться 1, но касяк в том, что все само собой почему то останавливается, и самое что интересное: количество единиц выдает по разному. ПОЧЕМУ ПОРАЗНОМУ ТО? Эт вообще какое то чудо. Короче хотелось бы узнать ответ.. На счет своего способа. Решил сделать так: просто менять у моего таймера интервал на нужное число, и в общем все как надо заработало. Все же если конечно твой способ Sfate более экономен по соотношению к процессорному времени то хотелось бы все же реализовать по твоему. Только думаю что скорей всего значение их будет равными. Джу ответа на не понятную для меня мистику) |
||||
|
|||||
| Sfate |
|
|||
![]() Angry Beaver ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 7.9.2008 Где: mov AL, BL Репутация: нет Всего: нет |
ну... может он не сотанавливается, а виснет? необходимо аккуратно вешать таймеры с циклами... и обязательно где-то останавливать иначе можно повесить свою железку...
вообще таймер, очень странная штука и к примеру если задать шаг тика в 1с, то он может сработать и при значении 0,8с, так что при 10с работы мы можем получить не число 10, а почти 13... также таймер может сгрешить и в большую сторону... но эт редко... и погрешность у него всегда разная) мой код может и будет более продуктивен... у меня то прост ступор есть (остановка по нажатию на кнопку)... в принципе нагрузка будет приблизительно одинаковой... и для нынешних процов разница не существена... --------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |