30-04-2018, Saat: 08:26
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 ?
Örneğin;
Önemli bir husus olduğu için 100 puan vereceğim beklediğim cevaba. Ancak, kayda değer cevaplara da yine puan vereceğim. Tabii teori değil, kod istiyoruz ;-)
Örneğin;
procedure TForm1.Button1Click(Sender : TObject);
var
Thrd : TThread;
begin
Thrd := TThread.CreateAnonymousThread(
procedure
begin
Sleep(10000);
end
);
Thrd.Start;
// Yukarıdaki thread kendi içinde 10 sn bekliyor. Biz de tam bu nokta da yukarıdaki thread'in bitmesini bekleyeceğiz. Ama nasıl ;-)
AnaThreadDonmadanBuradaYukaridakiThreadiBekleyelim;
Memo1.Lines.Add('Thread bitti');
end;
Önemli bir husus olduğu için 100 puan vereceğim beklediğim cevaba. Ancak, kayda değer cevaplara da yine puan vereceğim. Tabii teori değil, kod istiyoruz ;-)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...


Bir method'a değer aktarmıyoruz sonuçta. Direkt bu değişkene de eşitleyince de olur bence.
Başlığı okuyanlara anlatıyorum, tercihen sleep kullanmak durumunda olsaydım 10000 milisaniye değil de 10 milisaniye dilimler halinde 1'den 1000'e kadar bir döngü kurar içinde application.processmessages koyardım. Böylece 10 milisaniyelik donmalar beni üzmezdi.