Delphi Can
100 puan değerinde (Threading) - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: 100 puan değerinde (Threading) (/showthread.php?tid=2182)

Sayfalar: 1 2 3 4 5 6 7


Cvp: 100 puan değerinde (Threading) - Tuğrul HELVACI - 19-09-2020

Benim çözümümü ekteki örnek proje üzerinde görebilirsiniz.
[attachment=1357]


Ama basit çözümü kod olarak da paylaşayım. Dikkatinizi CPU kullanımına çekmek istiyorum elbette.

  while Event.WaitFor(0) = wrTimeOut do
 begin
   WaitMessage;
   Application.ProcessMessages;
 end;

Yukarıdaki koddan WaitMessage API'sini kaldırırsanız, muhtemelen %10+ bir CPU kullanımınız olur, aksi durumda %0-%1 aralığında bir CPU kullanımı olacaktır.


100 puan değerinde (Threading) - SecondLife - 19-09-2020

Teşekkür ederim hocam.


100 puan değerinde (Threading) - Tuğrul HELVACI - 19-09-2020

Rica ederim, umarım işinize yarar.


100 puan değerinde (Threading) - nguzeller - 20-09-2020

windows ortamını için bu güzel kodunuza teşekkür ediyorum.


100 puan değerinde (Threading) - ercan_elo_bil - 23-03-2022

procedure TForm1.Button1Click(Sender : TObject);
var
Thrd : TThread;
begin
Thrd := TThread.CreateAnonymousThread(
procedure
begin
Sleep(10000);
end
);
Thrd.FreeOnTerminate:=false;
Thrd.Start;
Thrd.WaitFor;
//CPU %0 dır
Memo1.Lines.Add('Thread bitti');
FreeAndNil(Thrd);
end;


100 puan değerinde (Threading) - Hayati - 23-03-2022

@ercan_elo_bil Forumumuza aramıza hoş geldiniz, puanınızı da verdim ama kod renklendirmeye dikkat ederseniz mod arkadaşlar çok sevinecektir  Smile


Cvp: 100 puan değerinde (Threading) - Tuğrul HELVACI - 23-03-2022

(23-03-2022, Saat: 14:53)ercan_elo_bil Adlı Kullanıcıdan Alıntı: procedure TForm1.Button1Click(Sender : TObject);
var
 Thrd : TThread;
begin
 Thrd := TThread.CreateAnonymousThread(
   procedure
   begin
     Sleep(10000);
   end
 );
 Thrd.FreeOnTerminate:=false;
 Thrd.Start;
 Thrd.WaitFor;
//CPU %0 dır
 Memo1.Lines.Add('Thread bitti');
FreeAndNil(Thrd);
end;

Maalesef cevabınız doğru değil. İlk sayfaya gidip soruyu bir kere daha detaylıca okuyabilirsiniz. 

"Uygulamanızın ana thread'ini durdurmadan(kullanıcı ile etkileşimli kalmaya devam edecek şekilde); bir başka senkronizayson nesnesini ya da bir thread'i nasıl beklersiniz ?"