Zitat von
Basilikum:
weshalb ersetzt Du nicht einfach die Zeile
Delphi-Quellcode:
for I := 0 to High(FHandleArray) do
FindNextChangeNotification(FHandleArray[I]);
durch
FindNextChangeNotification(FHandleArray[FWaitStatus - WAIT_OBJECT_0]);
so würdest Du immer nur für das signalisierende ChangeNotification FindNext aufrufen... sollten 2 "gleichzeitig" signalisierend sein, ergäbe dies 2 Schleifendurchgänge hintereinander, da WaitForMultipleObjects immer nur für ein Object den Signaled-Status entfernt (dasjenige, das auch im Return-Value angegeben wurde)...
das wollte ich wissen. ich fasse mal zusammen:
nehmen wir an ich habe 3 objekte. eines bekommt nun den signaled-status. dieser wird entfernt,
ich rufe mein synchronize auf, um muss nur für dieses
handle findnext* aufrufen.
falls keines den signaled-status bekommt (WAIT_TIMEOUT) muss ich aber für alle 3 objekte findnext* aufrufen oder rufe ich einfach wieder waitfor* für alle 3 auf?
logisch wäre mir nur findnext* aufzurufen wenn eines signaled ist.
danke!
[EDIT:]
habe es gerade ausprobiert und natrülich darf FindNextChangeNotification NUR augerufen werden, wenn das Objekt vorher auch signaled war. Großer Fehler..