Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 

Prozess wird nicht beendet

  Alt 14. Mär 2006, 09:11
Wenn ich folgende Methode in einem VCL Thread habe
Delphi-Quellcode:
function TRegNotifier.WatchRegKey(ARoot: HKEY; AKey: string): DWORD;
var
  err : DWORD;
  hEvent : THandle;
  hndlkey : HKEY;
begin
  // create event, that is signaled by RegNotifyChangeKeyValue
  hEvent := CreateEvent(nil, False, False, nil);
  if (hEvent <> 0) and not Terminated then
  begin
    err := RegConnectRegistry(nil, ARoot, hndlkey);
    if (err = 0) and not Terminated then
    begin
      err := RegOpenKeyEx(hndlkey, PChar(AKey), 0, KEY_NOTIFY, hndlkey);
      if (err = 0) and not Terminated then
      begin
        // start monitoring the specific key
        err := RegNotifyChangeKeyValue(hndlkey, True, REG_NOTIFY_CHANGE_LAST_SET, hEvent, False);
        if Assigned(OnRegKeyChanged) then
        begin
          FOnRegKeyChanged(self);
        end;
        if err <> ERROR_SUCCESS then
        begin
          if Assigned(OnRegNotifierError) then
            FOnRegNotifierError(self, err, SysErrorMessage(err));
          Terminate;
        end;
        RegCloseKey(hndlkey);
      end // RegOpenKey
      else
      begin
        if Assigned(OnRegNotifierError) then
          FOnRegNotifierError(self, err, SysErrorMessage(err));
        Terminate;
      end;
    end // RegConnectRegistry
    else
    begin
      if Assigned(OnRegNotifierError) then
        FOnRegNotifierError(self, err, SysErrorMessage(err));
      Terminate;
    end;
  end
  else
    err := GetLastError;
  // return last error
  result := err;
end;
...und der Thread läuft, wird der Prozess beim Schließen des Hauptfensters nicht beendet. Obwohl laut Nico in diesem Posting http://www.delphipraxis.net/internal...=514575#514575 der Prozess eigentlich terminieren müsste.

Aber warum tut er das bei mir nicht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat