suche nach Timer der in bestimmten Abständen funktionen ausführt.



  • ich hab das windows CE SDK .. vllt ist es da ja nicht drin.

    aber laut fricky

    ""um eine funktion unter win-ce als thread zu starten gibt CreateThread, oder einfacher:

    sollte es ja gehen. vllt weiss er noch rat.

    danke !!



  • Also in der Windows API habe ich die Funktionen SetTimer/KillTimer sowie die Nachricht WM_TIMER gefunden. Die sind übrigens Teil von winuser.h von dem Windows CE OS.

    Die scheinen alle recht brauchbar zu sein.



  • Melli83 schrieb:

    aber laut fricky
    ""um eine funktion unter win-ce als thread zu starten gibt CreateThread, oder einfacher:
    sollte es ja gehen.

    ach so, kann sein dass es die funktion nicht gibt unter CE. aber die hier gibts ganz sicher: http://msdn.microsoft.com/en-us/library/ms939170.aspx
    🙂



  • ha mir jetzt was gebastelt. funktioniert an sich auch.. aber halt nicht richtig. deswegen nochmal die nachfrage 🙂 ..

    also sieht jetzt so aus:

    #include <commctrl.h>
    #include <windows.h>
    .
    .
    .
    struct ThreadData
    {
    HANDLE stopEvent;
    TCHAR data;
    ThreadData() : stopEvent(0){}
    };
    
    DWORD WINAPI ThreadFunc(LPVOID param)
    {
    ThreadData* threadData = (ThreadData*)param;
    
    while(1)
    {
    	Sleep(1000);
    	_tprintf(_T("hallo umma1234"));
    }
    return 69;
    }
    .
    .
    .
    int WINAPI WinMain(	HINSTANCE hInstance,
    					HINSTANCE hPrevInstance,
    					LPTSTR    lpCmdLine,
    					int       nCmdShow)
    {
    
    	MSG msg;
    	HACCEL hAccelTable;
    	int count = 0;
    
    		///////////////////////////////////////////////////////////////////////////////////////////////////
    		ThreadData* threadData = new ThreadData;
    		// Hier wird das Event erzeugt
    	    //	threadData->stopEvent = CreateEvent(0,FALSE,FALSE,_T("StopEvent"));
    		DWORD threadId = 0;
    		// und hier ezeugen wir den Thread
    		HANDLE h = CreateThread(0, 	0, ThreadFunc,(void*)threadData,0,&threadId);
    
    		DWORD wait = WaitForSingleObject(h, INFINITE);
            ///////////////////////////////////////////////////////////////////////////////////////////////////
    
    .
    .
    .
    

    soooo.. an sich funktioniert es auch. also ich starte das programm und es popt ein fenster auf in dem jede sekunde der string angezeigt wird.

    mein problem ist jetzt. das restliche programm startet nicht mehr ^^
    es soll doch beides parallel laufen. und nicht nur eins von beiden 🙂

    habt ihr noch ne idee? muss ich das anders starten irgednwie ??

    danke euch !!



  • DWORD wait = WaitForSingleObject(h, INFINITE);
    

    ^^das liegt daran. das programm wartet, bis der thread beendet wird. das passiert aber nie, weil du im thread eine endlosschleife hast.
    solltest du die zeile allerdings ganz rausschmeissen, wird dein programm beendet und damit auch der thread gekillt.
    ...aber ersetz' die zeile mal durch:

    while(1)
    {
        Sleep(1000);
        printf ("hello from main thread");
    }
    

    🙂



  • ok ich hab die zeile ganz rausgeschmissen. ist doch auch ok oder ?
    weil oben hatte ich ja schon dein beispiel stehen ..

    DWORD WINAPI ThreadFunc(LPVOID param)
    {
    ThreadData* threadData = (ThreadData*)param;
    
    while(1)
    {
        Sleep(1000);
        _tprintf(_T("hallo umma1234"));
    }
    return 69;
    }
    

    also kein problem wenn sie einfachh ganz draussen ist ?
    oder sollte ich die while schleife in die mainfunktion packen ?

    danke



  • also alles gleich nur die waitzeile rausgeschmissen 🙂



  • Melli83 schrieb:

    oder sollte ich die while schleife in die mainfunktion packen ?

    anstelle der 'waitforsingleobject'-zeile soll die schleife rein und dann schau mal, ob du zwei verschiedene ausgaben siehst. die aus deinem thread und die aus der main-funktion.
    🙂



  • also wenn ich deins hinzufüge dann startet nur dein fenster. meine anwendung gar nicht mehr.
    wenn ich deins weg lasse und nur die WAIT zeile deaktiviere startet beides 🙂 also erst das programm und dann das fenster in der mein text steht 🙂 ..

    also sieht gut aus.

    danke dir !



  • Melli83 schrieb:

    ...die WAIT zeile deaktiviere...

    die muss auf jeden fall raus. ausser du startest vorher mit CreateThread noch andere threads.
    🙂


Anmelden zum Antworten