Timer oder Thread?
-
Mhhh, also ich hols jetzt nochmal wieder auf
Ich check mit dem Thread und ner verschleiften schleife
ob eine datei aktuallsiert worden ist, das ganze sieht so aus:CString check,stat; while(m_pOwner->checker != TRUE) { //setlocale(LC_ALL, "German"); CFileStatus status; CFile file; CString pfad; pfad = m_pOwner->setup.m_pfad; CTime filetime; if(file.GetStatus(pfad,status)) { filetime = status.m_mtime; stat = filetime.Format("%d.%m.%Y - %H:%M:%S"); } if(check != stat) { m_pOwner->m_log.SetCurSel(m_pOwner->m_log.AddString(m_pOwner->zeit +(" : ")+stat)); check = stat; } Sleep(0); }So nun ist die Systemauslastung aber dann auf 100 (aber es läuft anscheind noch alles gut)
So das kanns ja aber nicht sein.... Und es von grosser Wichtigkeit das das Programm diese Datei ständig Prüft, das hört eigentlich nie auf...
Also??
Was kann ich tun?? Hat jemand Ideen??der code steht in einem stinknormalen thread

[ Dieser Beitrag wurde am 04.09.2002 um 15:30 Uhr von C-O-M-M-A-N-D-E-R editiert. ]
-
Hallo Commader,
also für diesen Zweck wäre meiner Meinung nach auch ein Timer gegangen. Aber ein Thread ist natürlich schon eleganter.
Du prüfst deine Datei im Sekundenbereich. Also nehme ich mal an, dass es sooo dermaßen zeitkritisch nicht ist. Was hindert dich daran mal
Sleep(500)statt
Sleep(0)einzubauen um zu sehen, was dann mit der Auslastung passiert?
Nur so als Idee...
Grüße, Volle.
-
Super!!! danke Volle.... das hat meine Systemauslastung enorm runtergebracht!!
Erst 100% und nun nur nopch 4-6 % *freu*
spitzenmässig....
thx
commander
-
*mitfreu* + *AufDenLorbeerenAusruh*

Grüße, Volle.
-
Warum überwachst du nicht den Ordner. Wenn sich etwas ändert dann erst ob sich das File geändert hat
FindFirstChangeNotification
-
Wieso soll ich den Ordner überwachen??
Ist doch einfacher wenn ich direkt die File überwache!! Das funktioniert auch schon einwandfrei, mein Problem ist halt nur noch das einlesen
-
Das Überwachen muß du aber in einer SChleife realisieren.
Das Überwachen nicht da dir Windows eine Message sendet wenn sich was ändert.
Somit braucht dein Programme in diesem Moment 0 Resourcen.
-
Mhhhh wäre ne Überlegung wert.... nicht schlecht..vielen Dank..
-
Das Thema ist zwar schon uralt, aber trotzdem noch eine Frage:
Ich haben eine Thread-Klasse von CWinThread abgeleitet (habe also MeinThread.h und MeinThread.cpp) und möchte die jetzt in CAppView einbinden.
Dazu habe ich in der MeinThread.h meine AppView.h includiert (um einen Member-Pointer auf die CAppView anzulegen.Nun muss ich ja in meine AppView die MeinThread.h includieren, um da wiederum einen Zeiger auf meinen Thread einzubauen.
Danach erhalte ich aber Fehlermeldungen angro - was sicher an dem gegenseitigen includieren liegt oder?
Wie löse ich dieses Problem?Danke und Gruß
Chris
-
Hi,
ja das mit dem gegenseitigen includieren ist machnmal zum verzweifeln.Versuch mal folgendes:
Includiere in Deine AppView NICHT MeinThread.h, sondern mach in AppView.h eine Vorwärtsdeklaration. Dazu brauchst Du nur zu schreiben:class MeinThread;
class AppView
{
//Methoden und Variablen
.......
......}
Jetzt kennt AppView Deine Thread-Klasse, ohne dass Du sie includieren musst!

(Falls es nicht geht, mach es umgekehrt. Mach eine Vorwärtsdeklaration der Klasse AppView in MeinThread.h)