Delphi FireMonkey'de Özel Thread Sınıfı Kullanımı

Delphi FireMonkey'de Özel Thread Sınıfı Kullanımı

Merhaba,

Uygulamanın ana thread'i içerisinde arayüz güncelleme ve arayüzde bir bekletme, yüklenme, doldurma vb. işlemlerinizi sorunsuz gerçekleştirmek için yan thread tanımlaması yapmanız ve işlemlerinizi doğru şekilde çağırmanız çok önemli.

Bu bağlamda Delphi'de Thread kullanımına örnek oluşturacak bir çalışma hazırladım.

Kendi TThread Sınıfımızı Oluşturalım

TThread sınıfından miras alan özel sınıfımızı aşağıdaki gibi oluşturuyoruz.

type
  TMyThread = class(TThread)
 private
   FJob: TNotifyEvent;
 public
   procedure Jobs;
 published
   property Job: TNotifyEvent read FJob write FJob;
 protected
   procedure Execute; override;
 end;

Tanımlanan Jobs ve Execute prosedürlerinin gövdelerini oluşturalım.

procedure TMyThread.Execute;
begin
 inherited;
 Jobs;
 Synchronize(

   procedure()
   begin
      // Do something...
   end);
end;

procedure TMyThread.Jobs;
begin
 if Assigned(FJob) then
   FJob(Self);
end;

TMyThread Sınıfının Kullanımı

procedure MyJob(Sender: TObject);
procedure MyJobOnTerminate(Sender: TObject);

Kullanacağımız sınıf içerisinde thread sınıfımıza ait 2 prosedürü tanımlıyoruz ve gövdelerini oluşturuyoruz.

MyJob prosedüründe thread içinde yapılacak işi, MyJobOnTerminate prosedürü içerisinde işlem tamamlandığında yapılacak işi tanımlıyoruz.

Daha sonra sınıf içerisinde kullanacağımız değişkenimizi tanımlıyoruz.

var AThread: TMyThread;

Oluşturduğumuz AThread'e yapmak istediğimiz işlemi ve sonrasında yapacağı işlemi atıyoruz. Daha sonra başlatıyoruz.

AThread := TMyThread.Create(True);
AThread.Job := MyJob;
AThread.OnTerminate := MyJobOnTerminate;
Sleep(100);
AThread.Start;

Artık kendimize ait TMyThread sınıfını kullanarak kolaylıkla loader, activity, progress dialog ekranlarını yönetebilir, arkaplanda yaptığımız işlem bitene kadar kullanıcının farklı bir işlem yapmasını engelleyebiliriz.