Einzelnen Beitrag anzeigen

NicoDE
(Gast)

n/a Beiträge
 
#7

Re: [Artikel] Wann wird ein Prozess terminiert?

  Alt 11. Mär 2006, 17:09
Zitat von Luckie:
Wie gesagt, Delphi 6 Professional und Hauptfenster geschlossen und der Prozess war noch da im Taskmanager.
Etwas Code könnte nicht schaden.

Hiermit kann ich es nicht nachvollziehen (Delphi 6 Professional, Update Pack 2, RTL Update 3)
Delphi-Quellcode:
unit Unit1;

interface

uses
  Classes,
  Forms;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Windows;

function ThreadFunc(Parameter: Pointer): Integer;
var
  Event: THandle;
begin
  Event := CreateEvent(nil, True, False, nil);
  if 0 = Event then
    MessageBox(0, 'Event not created!', 'Test', MB_ICONERROR)
  else
  try
    // Shouldn't return...
    WaitForSingleObject(Event, INFINITE);
  finally
    CloseHandle(Event);
  end;
  MessageBox(0, 'Leaving ThreadFunc', 'Test', MB_ICONINFORMATION);
  Result := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Thread: THandle;
  ThreadId: DWORD;
begin
  Thread := BeginThread(nil, 0, ThreadFunc, nil, 0, ThreadId);
  if 0 = Thread then
    MessageBox(0, 'Thread not created!', 'Test', MB_ICONERROR)
  else
  try
    MessageBox(0, 'Thread created.', 'Test', MB_ICONINFORMATION);
  finally
    CloseHandle(Thread);
  end;
end;

end.
  Mit Zitat antworten Zitat