Thread/Timer Problem
-
Hallo zusammen,
habe gerade ein merkwürdiges Problem.
Meine Anwendung erzeugt einen neuen Thread. Dieser Thread erstellt einen Timer. Jedoch wird die angegebene Timer-Prozedur nicht durchlaufen. Erstelle ich den Timer im Hauptthread, dann funktioniert alles wunderbar.Hier mal etwas Code:
#include <windows.h> VOID CALLBACK TimerProc( HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime ); DWORD WINAPI ThreadProc( LPVOID pParam ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MSG msg; HANDLE hThread; DWORD dwThreadId; hThread = CreateThread( NULL, 0, ThreadProc, NULL, 0, &dwThreadId ); while ( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); }; }; VOID CALLBACK TimerProc( HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime ) { int i = 0; while ( i < 100 ) { i++; }; }; DWORD WINAPI ThreadProc( LPVOID pParam ) { SetTimer( NULL, NULL, 100, TimerProc ); while ( 1 ) { Sleep( 10 ); }; ExitThread( 0 ); return 0; };
-
Jeder thread hat seine eigene message queue. Die timer message langed also in der message queue von thread 2 nicht von thread 1, was bedeutet es passiert gar nix damit da thread 2 keine message loop zum abarbeiten hat
-
Hi CMatt, habe ich auch gerade gefunden. Eigendlich einleutend oder
Danke.