· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Периодический вызов процедуры.

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Мар 16, 2004 20:47:04 · Поправил: Kvazimoda

Не подскажете ли глубокоуважаемый All как получше сделать периодический вызов процедуры. Например, если прога висит в трее и раз в час (сутки или неделю, а может вообще как-нибудь еще) показывает MessageBox, ну или что-то там делает. Единственное что приходит в голову - это виндовая функция
invoke SetTimer,hWnd,nIDEvent,uElapse,offset TimerFunc,
где TimerFunc соответственно сама процедура. Но мне кажется что это не есть хорошо. Хотелось бы, что бы ожидание минимум тормозило систему.
Заране спасибо!


Дата: Мар 16, 2004 21:12:10

Можешь использовать GetTickCount


Дата: Мар 16, 2004 21:25:01

Kvazimoda
Но мне кажется что это не есть хорошо
Отнюдь. IMO, таймер - самое адекватное решение.


Дата: Мар 16, 2004 22:26:47 · Поправил: PavPS

Тут есть такая штука: когда вызываешь MessageBox?@16, возвращается управлениие только при нажатии на Ok и т. д. Т.е. если не нажать раз в час (такой период Call-а), то вылезет уже 2 MsgBox-a. Это всё дело можно синхронизировать ручками, но я бы предложил метод CreateThread@?, а потом Sleep. И никакого беспокойства. Хотя, ч-з час, без нажатия на MsgBox, это не появится. Но это тоже решается. А вот на счет загрезки системы, то может я и ошибаюсь, но присутствует всего лишь расход памяти на создание объектов (на CreateThread@?, конечно, побольше), а вот для ожидания Sleep вызывает KeWaitForSingleObject а потом вся эта вещь создает таймер. Конечно, посредственно, но что тут Timer, что там...


Дата: Мар 17, 2004 00:14:15

CreateWaitableTimer


Дата: Мар 17, 2004 02:21:22 · Поправил: Kvazimoda

2 PavPS:
Про MessageBox я же говорил для примера. Мне надо делать архивную копию фалов на серваке. Просто прог в нете не нашел полностью удовлетваряющих требованиям (архивирование каждые 2 часа и сохранение последних N копий). Вот и решил сам написать.

2 rst:
Спасибо, попробую.

2 Asterix:
IMHO очень накладно крутить цикл
@@:
call GetTickCount
cmp eax,SomeValue
jbe @B


Дата: Мар 17, 2004 04:03:24

Kvazimoda
... прога ... раз в час (сутки или неделю, а может вообще как-нибудь еще ... надо делать архивную копию фалов на серваке ...
Чем не устраивает планировщик задач?


Дата: Мар 17, 2004 11:49:27

2 q_q:
Никогда им не пользовался, всегда отрубал в 98, а в 2000 я его и не искал. Но сейчас посмотрю чего он дает делать...


Дата: Мар 17, 2004 23:33:45 · Поправил: Kvazimoda

А не может ли кто-нибудь у кого сорцы винды есть посмотреть какой функцией майкрософт в планировщике задач узнает момент запуска задачи? Они-то наверное лучше знают.
2 volodya:
Просьба не пинать, мне интересна только название API функции для таймера или х.з. чего они там используют, а не кусок исходника.


Дата: Мар 18, 2004 14:28:26

Я тебе ведь дал уже название этой функции.


Дата: Мар 18, 2004 20:48:46

2 rst:
Большое спасибо! Мне было просто интересно чего у мелкомягких. А они случаем для нее CreateThread не используют? А то прога висит, если не в отдельном потоке WaitForSingleObject вызывать.


Дата: Мар 18, 2004 20:55:20

почитай . там можно вообще через APC работать - т.е. будет вызываться CallBack


Дата: Мар 18, 2004 21:38:53

Kvazimoda

Как раз в данном случае пинать не за что. Кусок исходника... Ммм... Короче, на тебе taskman.c, а уж найдешь ли ты там, что ищешь, мне неведомо!

478147826__taskman.c


Дата: Мар 19, 2004 09:08:31 · Поправил: Shift

volodya
Поосторожнее, пожалуйста.Ещё найдётся стукач в МС, что тут некий Володя из NCBI исходники постит...(тьфу-тьфу, конечно)


Дата: Мар 19, 2004 17:56:20

Shift
Если б не Ваш пост, то они и не узнали бы про NCBI :-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.056