I create a Windows timer using the following
FHandle := SetTimer(0, 0, 1000, TFNTimerProc(@TMyClass.MyMethod));
Is this thread shown in the Delphi "Threads" window. If Yes how I can get this Thread ID?
I create a Windows timer using the following
FHandle := SetTimer(0, 0, 1000, TFNTimerProc(@TMyClass.MyMethod));
Is this thread shown in the Delphi "Threads" window. If Yes how I can get this Thread ID?
SetTimer
does not create a thread but does call the specified function in the context of the main thread after the specified timeout. If you don't pass a callback function, SetTimer
posts a WM_TIMER
message to your main window class.
See the MSDN reference for SetTimer for more information.
There is no thread created by that function. The OS calls the callback function when your program handles the wm_Timer
message. It's called from within the context of the same thread that called SetTimer
, so the thread had better have a message pump. (It you're calling this from the main VCL thread, then the message pump is provided for you by the TApplication
class.)
Furthermore, SetTimer
doesn't return a handle. It returns a timer ID.
And finally, unless that method is a class static
method, it won't work the way you hope. If the signature of the callback matches what SetTimer
expects you to provide, you won't need a type cast, so if you needed to type-cast the function pointer to make the compiler accept your code, you probably got it wrong.