Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: HauptThread eines Processes

  Alt 6. Mai 2008, 09:10
Zitat von himitsu:
notfalls sende doch WM_CLOSE einfach an alle Threads der Anwendung
Das setzt aber voraus, dass alle Threads ein Fenster haben, an das man diese Fensternachricht schicken könnte.

Zitat:
Aber geh lieber über TerminateProcess, den WM_CLOSE wird auch nur von der Nachrichtenschleife verarbeitet und letztendlich wird wieder TerminateProcess aufgerufen.
Aber es wird zu erst aufgeräumt, sprich die Referenzenzähler der geladenen DLLs werden dekrementiert usw.

So gesehen, gibt es keine sichere und saubere Möglichkeit einen fremden Prozess zu beenden. Stellt sich die Frage, ob das denn wirklich notwendig ist. Und wenn es wirkölich notwendig ist, sollte man das nur im Notfall machen. Siehe dazu die Anmerkungen aus dem SDK:
Zitat:
The TerminateProcess function is used to unconditionally cause a process to exit. The state of global data maintained by dynamic-link libraries (DLLs) may be compromised if TerminateProcess is used rather than ExitProcess.

TerminateProcess initiates termination and returns immediately. This stops execution of all threads within the process and requests cancellation of all pending I/O. The terminated process cannot exit until all pending I/O has been completed or canceled.

A process cannot prevent itself from being terminated.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat