-1
我想通過單擊按鈕來終止線程。如果線程在沒有用戶中斷的情況下正常工作,則可以,但有時用戶需要中止線程,這就是用戶如何中止線程的問題。如何在delphi中直接在線程外終止線程?
這裏是我的代碼,我測試:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, mmsystem, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
type
hangth = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure play;
end;
var
Form1: TForm1;
played: boolean;
szalhang: hangth;
implementation
{$R *.dfm}
procedure hangth.play;
begin
played := true;
szalhang.Terminate;
end;
procedure hangth.Execute;
begin
played := false;
SndPlaySound(pchar('hang.wav'), SND_SYNC);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
played := true;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
if played = true then begin
szalhang := hangth.Create(true);
szalhang.Resume;
end else begin
szalhang.Terminate();
// here i want to terminate thread, but it doesn't want to be killed.
end;
end;
end.
然而,我們仍然不知道問題是什麼。 「直接在線程之外終止線程」是什麼意思? –
我想通過單擊按鈕來終止線程。如果線程在沒有用戶中斷的情況下正常工作,則可以,但有時用戶需要中止線程,這就是用戶如何中止線程的問題。 – user3880482
好的,這是一個好的開始。但是,你能修正上面的代碼,以便它編譯?你說它有效,但我們都看到證明它不起作用。 –