Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

нет работает SetWaitableTimer   Найти похожие ветки 

 
S@shka ©   (2004-09-01 01:15) [0]

Почему то не происходит вызов процедуры обработки .....
var
Th : THandle;
W  : TWaitThread;

procedure T ( lp: Pointer; dw1: DWORD; dw2: DWORD);
begin
  Form1.Memo1.lines.Add(FormatDateTime("hh:nn:ss",Now));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 st : TSystemTime;
 ft,lft : TFileTime;
begin
 DateTimeToSystemTime(Now + 1 / 24 / 60 / 60 * 1,st);
 SystemTimeToFileTime(st, lft);
 LocalFileTimeToFileTime(lft, ft);
 Th := CreateWaitableTimer (nil,false,"MYRRR");
 SetWaitableTimer(Th, TLargeInteger(ft),0,@T, nil, FALSE);
end;


 
MBo ©   (2004-09-01 07:22) [1]

1. procedure T должна быть со спецификатором stdcall.
2. обычное применение WaitableTimer - запустить его и ждать с помощью Wait-функций (WaitForSingleObjectEx) - т.е. процедура в этом случае не нужна
3. если все же требуется вызов процедуры, то поток должен находиться в "тревожном" (alert) состоянии. WaitForSingleObjectEx - как раз одна из функций, приводящих к этому.


 
S@shka ©   (2004-09-01 11:16) [2]

Да... stdcall просто не скопировал...
Но я хотел сделать следующее
ЧТобы по событию таймер выпонилась процедура T
в которой будет написано
CreateThread


 
MBo ©   (2004-09-01 12:26) [3]

SleepEx добавь.


 
Digitman ©   (2004-09-01 12:29) [4]


> в которой будет написано
> CreateThread


а это так важно , что в ней будет написано ? что это меняет коренным образом ? да ничего абсолютно !

а вот это (нижеследующая цитата из станд.справки) меняет, и в это нужно вчитаться и осмыслить, и после того принимать соотв.меры в своем коде

When the specified due time arrives, the timer becomes inactive. The state of the timer is set to signaled, the timer is reactivated using the specified period, and the thread calls the completion routine. If you call SetWaitableTimer and the thread is not in an alertable state, the completion routine is canceled.


 
S@shka ©   (2004-09-01 23:29) [5]

Все равно не понятно немного...


 
Digitman ©   (2004-09-02 08:41) [6]

что непонятно ?

If you call SetWaitableTimer and the thread is not in an alertable state, the completion routine is canceled.

вникаем в эту фразу :

Если вы вызвали SetWaitableTimer и тред, который выполнил этот вызов, не находится в "тревожном" состоянии (в момент когда интервал времени истек и таймер должен просигналить), вызов п/программы завершения будет отменен системой (т.е. сигнал таймера об окончании заданного периода будет безвозвратно утерян)

а про перевод трэда в "тревожное" состояние уже сказано в [1] или [3]



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1095784428
Sergey_Masloff
2004-09-21 20:33
2004.10.10
Передать FIBDatabase в COM-dll


4-1094537793
BRemB
2004-09-07 10:16
2004.10.10
Нажать левую кнопку мыши


3-1094721688
Loaders
2004-09-09 13:21
2004.10.10
DBGrid+DataSet


1-1095935192
Cosinus
2004-09-23 14:26
2004.10.10
ЕХЕ из ресурса. Возможно ли запустить без Res.SaveToFile?


4-1093959708
Jiurasrasr
2004-08-31 17:41
2004.10.10
Как отключить эффект сворачивания окна?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский