![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Ruslan_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Можно ли на платформе .NET реализовать выполнение вызова функции через каждые 10 миллисекунд?
System.Timers.Timer разочаровал... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Пожалуйста, делаем бесконечный цикл и в нём делаем что надо, через заданную задержку (Thread.Sleep). Если в это время нужно ещё что-то выполнять, то пускаем цикл в отдельном потоке. Если нужен пример - будет пример.
-------------------- ![]() |
|||
|
||||
| Ruslan_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
ОК, спасибо! Можно пример?
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
mr.DUDA, думаешь на Thread.Sleep'е 10 миллисекунд реально? там квант около 20, вроде..
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Квант точно не 20 миллисекунд. Микросекунд - да, возможно простейший пример, без управления созданным потоком (так и будет крутиться до бесконечности):
-------------------- ![]() |
||||
|
|||||
| stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
у меня это выводит:
т.е. квант 15.625 миллисекунд Добавлено @ 18:03 .. хотя, может AppendText долго работает. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Сие действительно странно - даже на простейшие операции типа инкремент идёт большой расход времени... -------------------- ![]() |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
.. хотя не, вру, AppendText не считается же.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Ruslan_ |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Я для проверки переписал так:
К удивлению получил следующее.
Как так может быть? Без комментариев Это сообщение отредактировал(а) Ruslan_ - 31.10.2006, 18:18 |
||||
|
|||||
| stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
и так тоже 15.625 Добавлено @ 18:19
а так нули. всё-таки квант реально 15 с мелочью миллисекунд. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
З.Ы. выставление у процесса и потока максимального приоритета не спасает
-------------------- ![]() |
|||
|
||||
| Ruslan_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
С .NET все ясно.
Может кто-то посоветует, как решить эту задачу? Что если попробовать в VS 6.0 класс Timer? Добавлено @ 18:29 т.е. идея кроссплатформенности исчезает... Делать привязку к Win API? - ОК Спасибо. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
смотри в msdn про multimedia timers, незнаю можно ли их к .net прикрутить.. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Ты меня удивляешь... Это же всегда так было -- GetTickCount в винапи имеет точность порядка 16мс. Я не совсем понимаю природу этого явления. Но так устроена винда. Хочется точности -- вызывайте винапишное QueryPerformanceCounter / QueryPerformanceFrequency. Вот тогда уж действительно раздолье Добавлено @ 19:21
А так, только и остаётся в цикле проверять -- не прошли ли те самые 10 мс. Это сообщение отредактировал(а) Дрон - 31.10.2006, 19:22 -------------------- Да. Именно так. |
||||
|
|||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Дрон, если я не ошибаюсь, System.Diagnostics.Stopwatch именно эти функции и использует.
Вполне. Вот только что соорудил простенькую обёртку. Интервал в 10 мс работает нормально.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |