Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
recursive fonksiyonlarını thread
#1
Merhaba Arkadaşlar Bir sorum Olacaktı.

Bir tane recursive fonksiyonum var. bu fonksiyon normalde çalıştığında sistemde kilitlenmeler yaşanmakta tabi bunu engellemenin en mantıklı yolu thread kullanmak. recursive fonksiyonlarını thread ile nasıl kullanılıyor.
Cevapla
#2
@Tuğrul HELVACI hocamızın makalesi yardımcı olur sanırım

http://www.tugrulhelvaci.com/?p=126
Cevapla
#3
Reqursive fonksiyonunuzun içinde ne yaptığınız önemli !
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
Thread kullanımın amacı programın geç cevap verdiği yada cevap veremediği bir işlemden dolayı kilitlenmesini, donmasını önlemek. Sonuç olarak olay fonksiyonun recursiv (kendini çağıran) olması değil. Programın düzgün çalışmasını sağlamak.
Cevapla
#5
type
 TGeneralThread = class(TThread)
 private
   FDConnection: TFDConnection;
//    procedure Start;

   { Private declarations }
 protected
   procedure Execute; override;
   destructor Destroy; override;

 public
   CommandList: TStringList;
   CommandArray: TSuperArray;
   ProcessAction: string;
   procedure DoExecute;
   function AddNewTrusteeThread(form: TStringList): string;

yukarıdaki gibi bir thread unit var. burada addnewtrusteethread doexecute tartafından tetikleniyor

doexecute de execute ile tetikleniyor.

procedure TGeneralThread.DoExecute;
begin
 try
   case IndexStr(ProcessAction, ['Add', 'Remove', 'Save']) of
     0:
       AddNewTrusteeThread(CommandList);
     1:
       RemoveFolderTruesteeThread(CommandArray);
     2:
       SavePermissionThread(CommandList);
   else
     WriteExceptionLog('Hatalı Parametre Girildi');
   end;

 finally

 end;

end;

procedure TGeneralThread.Execute;
begin
 inherited;

 try
     DoExecute;
 finally
   Terminate;
 end;

end;

end.

bunu ben farklı bir yerden threat i çalıştırıyorum. orası da altta

function AddNewTrustee(form: TStringList): string;
var
 thAdd: TGeneralThread;
begin
 try
   try
     thAdd := TGeneralThread.Create(true);
     thAdd.FreeOnTerminate := True;
     thAdd.CommandList := TStringList.Create;
     thAdd.ProcessAction := 'Add';
     thAdd.CommandList.Text := form.Text;
     thAdd.Start;
   except
     on E: Exception do
       WriteExceptionLog('Thread Save Error :' + E.Message);
   end;
 finally
   //thAdd.Free;
 end;
end;

burada bir iş verdikten sonra 2.işi verince kilitlenme yaşanıyor aslında sorun bu. normalde kuyruğa alması gerekmez mi? yada hata neden kaynaklı olabilir.

kodları biçimli bir şekilde düzenledim. kusura bakmayın.
Cevapla
#6
@powerghost,
@AYHAN_ASLAN 
Form editörümüz üzerinde kod biçimlendirme amacı ile kullandığımız 2 adet buton bulunmaktadır. Delphi Logolu olan (Delphi Kod Ekle) buton ile Delphi kodu, Süslü Parantez simgeli buton (Kod Biçimlendirme) ile de diğer dillere ait (SQL'de dahil) kodlar eklenerek (aşağıdaki ekran görüntüsünde işaretlenmişir), kod biçimlendirme yapılmaktadır. 
Bu kapsamda;

kodbicim.jpg

Daha önce kullanmış olduğunuz [code] taglarını kod biçimlendirme Tag'ları ile değiştirilmiştir.
Sonraki kod kullanımlarında doğru kod tag'larını kullanarak bize yardımcı olursanız memnun oluruz.
Aksi durumda DelphiCan Forum Kurallarında belirtilen yaptırımlar uygulanacaktır.
İlgi ve anlayışınız için şimdiden teşekkür eder, iyi çalışmalar dileriz.

Önemli Not: Herhangi bir yerden kopyaladığınız metni, DelphiCan metin editörüne yapıştırmadan önce, metin editörünün araç çubuğunda bulunan "Kaynağı Görüntüle" butonuna tıklayın. Daha sonra kopyaladığınız metni yapıştırın. Böylece harici bir kaynaktan aldığınız metin biçimlendirmesi yok sayılacaktır.
Delphi Can'dır!
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Thread içinde Web Browser Çalışırmı adelphiforumz 0 432 09-01-2025, Saat: 13:22
Son Yorum: adelphiforumz
  Thread içinde CoInitialize(nil) ve CoUninitialize serdar 6 2.134 22-08-2023, Saat: 09:50
Son Yorum: yhackup
  Thread Socket (Yardım) hkeskin 1 1.977 11-07-2023, Saat: 12:47
Son Yorum: delphiman
  Thread pool mantığı nasıl kurulmalı ? mrmarman 12 4.856 16-12-2021, Saat: 20:45
Son Yorum: Tuğrul HELVACI
Question Bu thread kullanımı doğrumu ? seci20 0 1.020 05-09-2021, Saat: 12:55
Son Yorum: seci20



Konuyu Okuyanlar: 1 Ziyaretçi