Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

HIIIIIIIIIILLFFFFFFFFEEEEEEEEEEEEE!!!

ICH BIN ZU BLÖD ;)!!!

Also ich habe folgendes Problem:

Ein Tool soll den Rechner nach best. Dateien durchsuchen, diese in eine Datenbank schreiben und der User soll vom Tool nix mitkriegen. Deshalb brauch ich einen Timeout. Soweit so gut. Da ich nicht sooo der Crack bin in C++ und ich leider festgestellt habe, daß die IT-Branche nicht so ganz die meine ist, versuche ich es als erstes in der MSN...

Ich habe ein paar Sachen gefunden, aber ich verstehs net.

Das Programm ist übrigends ein Commandozeilendingsda ;).

Gefunden habe ich SetTimer und KillTimer, glaube aber verstanden zu haben, daß es sich hierbei um Funktionen handelt, die nur von Windows-Appl. aufgerufen werden können. Ich weiß mittlerweile ich brauche einen neuen Thread. Wie ich den definier hab ich gelesen, aber nich so richtig verstanden. Aber das würd ich glaub ich noch hinkriegen, wenn ich weiß, was dieser Thread können muss :).

Ich weiß, daß ich mir die Zeit nehmen sollte, daß alles zu verstehen, aber

1. Will der Kunde das Tool haben, ich hab also ein gewisses Zeitfenster, daß ich eh schon gesprengt habe

und

2. Ich habe nicht so richtig interesse daran, aber ich muss es hier halt machen.

Deshalb würde ich mich freuen, wenn jemand von Euch ein Beispiel hat, oder mir eine auch für "Nicht-CT-Leser" (kleiner Scherz :)) verständlich ist, wie ich den Thread definiere, in aufrufe und was der können muß...

THXal...

B

Geschrieben

ich werde es einfach einmal versuchen. also wenn ich dein problem richtig verstehe willst du alle x sekunden etwas bestimmtes machen, ohne das das hauptprogramm darunter leidet.

dann läuft das so.

1.) thread funktion schreiben. diese müssen einen bestimmten prototypen haben. dieser ist. DWORD WINAPI ThreadProc(LPVOID lpParameter); mit diesem wissen schreiben wir nun die funktion


DWORD WINAPI MyThreadProc(LPVOID lParam)

{

   for (;   // forever

   {

      Sleep(10000);   // 10 sekunden warten

      f ();           // aufruf der funktion f

   }

   return 0;

}

[/code]


mit dieser thread- funktion rufe ich alle 10 sekunden die funktion f auf. das ist natürlich beliebig erweiterbar. den parameter den die funtkion übergeben bekommt ist ein zeiger auf void, den ich mir beliebig casten kann. diesen übergebe ich dann beim starten des thread. wenn dieser nun also vom typ int ist caste ich ihn in der funktion in einen in um ihn zu nutzen beispeil:

[code] // ... int* p = (int*)lParam; // ...
2.) der thread muss gestartet werden. dazu gibt es die funktion CreateThread. siehe msdn. diese funktion rufe ich mit den gewünschten parametern im hauptprogramm auf. beispiel:

//...

int main ()

{

   // ...

   HANDLE hThread;

   hThread = CreateThread(NULL, 0, MyThreadProc, NULL, NULL, NULL);

   // ...

}

// ...

die parameter kann man natürlich noch etwas andere angeben. es läuft aber auch so. wichtig dabei ist der dritte parameter. dieser ist ein zeiger auf meine thread funktion die ich vorher deklariert und irgendwo implementiert habe. der vierte ist wieder ein zeiger auf void. diese ist der zeiger, der meiner thread- funktion übergeben wird. dieser thread läuft jetzt bis die funktion abgearbeitet wurde oder ich ihn manuel beende. das die beispiel funktion eine dauerschleife hat, sie also nie ende, muss ich das manuel machen. dafür gibt es die funktion SuspendThread. diese bekommt als einzigen paramteter den handle auf den thread übergaben. diesen gibt die funktion CreateThread zurück. im beispiel haben wir ihn in der variable hThread gespeichert. beispiel:

// ...

HANDLE hThread;

// ...

SuspendThread(hThread);

// ...

so das sollte alles sein. sollten noch fragen sein. poste einfach nocheinmal.

<FONT COLOR="#a62a2a" SIZE="1">[ 15. November 2001 11:51: Beitrag 1 mal editiert, zuletzt von maddin ]</font>

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...