Thread error handle invalid (6) hatası
suspend resume çalışmıyor thread Unit2 koları
Kod: Tümünü seç
unit Unit2;
interface
uses
Classes, Unit1, Windows, Messages, SysUtils;
type
TTestThread = class(TThread)
private
protected
procedure Execute; override;
end;
implementation
procedure TTestThread.Execute;
begin
FreeOnTerminate:=true;
form1.Button4.Click;
end;
end.
Difer form
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, IdAntiFreezeBase, IdAntiFreeze, AdvSmoothProgressBar,
BusinessSkinForm, bsSkinData, bsSkinCtrls;
type
TForm1 = class(TForm)
Button4: TButton;
IdAntiFreeze1: TIdAntiFreeze;
Label13: TLabel;
Label12: TLabel;
Label11: TLabel;
AdvProgressBar1: TAdvSmoothProgressBar;
bsSkinData1: TbsSkinData;
bsCompressedStoredSkin1: TbsCompressedStoredSkin;
bsBusinessSkinForm1: TbsBusinessSkinForm;
Button1: TbsSkinSpeedButton;
Button2: TbsSkinSpeedButton;
button3: TbsSkinSpeedButton;
IdHTTP: TIdHTTP;
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdHTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure bsSkinSpeedButton1Click(Sender: TObject);
procedure bsSkinSpeedButton2Click(Sender: TObject);
procedure bsSkinSpeedButton3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f: TFileStream;
success: Boolean;
implementation
uses Unit2;
var
NewThread: TTestThread;
{$R *.DFM}
procedure TForm1.Button4Click(Sender: TObject);
begin
F := TFileStream.Create('dd.exe', fmCreate);
F.Seek(0,soFromEnd);
try
IdHTTP.Get('http://deneme.com/deneme.exe', F);
except
showmessage('Dosya Bulunamadı');
end;
FreeAndNil(F);
F.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
application.ProcessMessages;
end;
procedure TForm1.IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if AWorkMode = wmRead then
begin
AdvProgressBar1.Position := AWorkCount ;
Label12.Caption := floatToStr(round(advProgressBar1.Position * 100 / advProgressBar1.Maximum)) + ' ' + '%' ; //yüzde
Label13.Caption := IntToStr(AWorkCount div 1024) + ' ';
end;
end;
procedure TForm1.IdHTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
if AWorkMode = wmRead then
begin
AdvProgressBar1.Maximum := AWorkCountMax ;
AdvProgressBar1.Position := 0 ;
if AWorkCountMax>0 then Label11.Caption:=Inttostr(AWorkCountMax div 1024) + ' ';
end
end;
procedure TForm1.bsSkinSpeedButton1Click(Sender: TObject);
begin
NewThread:=TTestThread.Create(False);
end;
procedure TForm1.bsSkinSpeedButton2Click(Sender: TObject);
begin
Button3.Enabled:=True;
Button2.Enabled:=False;
NewThread.Suspend;
end;
procedure TForm1.bsSkinSpeedButton3Click(Sender: TObject);
begin
Button2.Enabled:=True;
Button3.Enabled:=False;
NewThread.Resume;
end;
end.