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.