Einzelnen Beitrag anzeigen

Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#13

Re: Wie stelle ich sicher dass ich nichts von VCL verwende

  Alt 5. Nov 2008, 10:29
Muss da jetzt doch nochmal nachhaken:

Ist das Application.ProcessMessages hier wirklich sinnlos?

Delphi-Quellcode:
Sleeper := 0;
while Sleeper < 100 do
  begin
  Sleep(1);
  inc(Sleeper);
  Application.ProcessMessages;
end;
Also folgende Situation: Meine DLL Init Funktion wird im Main Thread aufgerufen. In dieser wird meine Notifyer Objekt erstellt, welcher ein Fenster(-handle) ist welches auf (USB-)WM wartet und bei den entsprechenden WM irgendwelche Aktionen ausführt. Damit gehört diese Fenster doch zum MainThread!?

Nehmen wir mal an, jetzt wird eine andere DLL-Funktion in einem anderen Thread aufgerufen, mein USB Gerät rebootet und ich muss warten, bis mein Notifyer erkennt dass es wieder da ist. Ich kehre also aus der Funktion vorerst nicht zurück. Damit müsste der MainThread solange lahmgelegt sein, oder? Also kann mein Notifyer nicht auf die WM reagieren, oder?

Um dies zu verhindern, also um dafür zu sorgen, dass die WM im Mainthread weiter abgearbeitet werden und mein Notifyer wieterhin funktioniert, müsste Application.ProcessMessages hier doch sogar notwendig sein, oder?

Oder habe ich das Prinzip falsch verstanden?

Nochmals vielen Dank für eure Hilfe und Geduld mit mir.
  Mit Zitat antworten Zitat