Bir süredir üzerinde çalıştığım projemde threadden kaynaklandığını düşündüğüm bir sorunla karşılaştım. Uygulamada bir bölümde dosya transferi gerçekleştirmek istiyorum. Bunun için idtcpclient kullandım buraya kadar problem yoktu ama ne zamanki progressbar eklemek için idtcpcilent eventleri kullanmam gerekti o zaman hatalar vermeye başladı uygulama çok araştırmama rağmen sıkıntıyı bulamadım. Hatalar dosya transferi sırasında hiç bir sorun yokken donma ve uygulama kapanma şeklinde oluyor. Alta kullandığım kodları paylaşıyorum.
Hocalarımızın yardımını bekliyorum. İyi çalışmalar.


Kod: Tümünü seç
type
TDosyacek = class(TThread)
private
socket:TIdTCPClient;
udpsocket:TIdUDPClient;
ip_cek:string;
veri_cek:string;
Dosyalar_cek:string;
trkarakter:string;
veriprogress:String;
procedure SocketWorkBegin(Sender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
procedure SocketWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure SocketWork(Sender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
.
.
.
.
.
constructor TDosyacek.create(ip: string; veri: string; Dosyalar:string);
begin
FreeOnTerminate:=true;
veri_cek:=veri;
Dosyalar_cek:=dosyalar;
ip_cek:=ip;
inherited Create (True);
udpsocket:=TIdUDPClient.Create(nil);
socket:=TIdTCPClient.Create(nil);
socket.OnWork:=SocketWork;
socket.OnWorkBegin:=SocketWorkBegin;
socket.OnWorkEnd:=SocketWorkEnd;
socket.Host:=ip;
socket.Port:=12672;
socket.Connect;
resume;
end;