Forum Kurallarımız güncellenmiştir. DelphiCan Forum Kuralları (March 04) x

Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
AsyncTask Hakkında
#1
Merhaba,
Androidde yaptığım bir ihtiyaç duyuyorum ben arkaplanda işlem yaparken arayüzün hiçbir şekilde donmamasını , veya kullanıcının bunu hissetmemesini istiyorum uygulamanın akıcılığı açısından.
Veya kullanıcının işlem yaptığı anda başka bir işlem yapmasını istemediğimde, işlem yaparken ekrana bir animasyon koyarak bekletiyorum.

Delphide Bu işlemler nasıl yapılır ?

Programa tıkladığında kullanıcı adı şifre alanı hızla gelsin mesela , eğer bir işlem yapıyorsa da arka planda yapsın, veya yorucu bir işlem yaparken yanıt vermiyora düşmesi yerine, ön tarafa bir animasyon koyarak onu beklemesini nasıl sağlıyorsunuz.
WWW
Cevapla
#2
(28-08-2016, Saat: 10:19)yhackup Adlı Kullanıcıdan Alıntı: Merhaba,
Androidde yaptığım bir ihtiyaç duyuyorum ben arkaplanda işlem yaparken arayüzün hiçbir şekilde donmamasını , veya kullanıcının bunu hissetmemesini istiyorum uygulamanın akıcılığı açısından.
Veya kullanıcının işlem yaptığı anda başka bir işlem yapmasını istemediğimde, işlem yaparken ekrana bir animasyon koyarak bekletiyorum.

Delphide Bu işlemler nasıl yapılır ?

Programa tıkladığında kullanıcı adı şifre alanı hızla gelsin mesela , eğer bir işlem yapıyorsa da arka planda yapsın, veya yorucu bir işlem yaparken yanıt vermiyora düşmesi yerine, ön tarafa bir animasyon koyarak onu beklemesini nasıl sağlıyorsunuz.

Sorunuzun kısa ve öz cevabı Thread.

Aşağıdaki linklerden istifade edebilirsiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
Teşekkürler bu konuyu inceleyeceğim.
WWW
Cevapla
#4
Merhaba,
Son dönemlerde adını sıkça duyduğumuz Paralel Programlama (Parallel Programming) yavaş yavaş bizim (Delphi) de literatürümüze girmeye başladı. Belirtmiş olduğunuz kapsamda System.Threading referansı içerisinde yer alan TTask sınıfı işinizi görecektir. Tuğrul Hocamızın da belirttiği linklerde bir çok alternatif yöntem kullanılabilir.

TTask sınıfının genel kullanımına bir örnek;

Uses bölümüne eklenecek referans
Uses
 System.Threading;

Örnek Thread Yapısı
  TTask.Run(
   procedure
   begin
     // Ana Thread işlemimiz
     TThread.Synchronize(Nil,
       procedure
       begin
         // Yapılan ana işlem içerisinde eşzamnlı çalışacak tali bir iş
       end);
   end);

Aynı işlemi İsimsiz (Anonymous) thread'lar ile de yapabilirsiniz.

Örneğin, Delphi Can formumuzun HTML kodlarını AnonymousThread ile alalım:
Uses 
 System.Threading, System.Net.URLClient, System.Net.HttpClient

....

  TThread.CreateAnonymousThread(
   procedure
   var
     strHTML: TStringStream;
     strHttp: THttpClient;
   begin
     strHttp := THttpClient.Create;
     strHTML := TStringStream.Create;
     try
       strHttp.Get('http://www.DelphiCan.com', strHTML);
       TThread.Synchronize(nil,
         procedure
         begin
           Memo1.Text := strHTML.DataString;
         end);
     finally
       strHttp.free;
       strHTML.free;
     end;
   end).Start;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
(29-08-2016, Saat: 17:17)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Son dönemlerde adını sıkça duyduğumuz Paralel Programlama (Parallel Programming) yavaş yavaş bizim (Delphi) de literatürümüze girmeye başladı. Belirtmiş olduğunuz kapsamda System.Threading referansı içerisinde yer alan TTask sınıfı işinizi görecektir. Tuğrul Hocamızın da belirttiği linklerde bir çok alternatif yöntem kullanılabilir.

TTask sınıfının genel kullanımına bir örnek;

Uses bölümüne eklenecek referans
Uses
 System.Threading;

Örnek Thread Yapısı
  TTask.Run(
   procedure
   begin
     // Ana Thread işlemimiz
     TThread.Synchronize(Nil,
       procedure
       begin
         // Yapılan ana işlem içerisinde eşzamnlı çalışacak tali bir iş
       end);
   end);

Aynı işlemi İsimsiz (Anonymous) thread'lar ile de yapabilirsiniz.

Örneğin, Delphi Can formumuzun HTML kodlarını AnonymousThread ile alalım:
Uses 
 System.Threading, System.Net.URLClient, System.Net.HttpClient

....

  TThread.CreateAnonymousThread(
   procedure
   var
     strHTML: TStringStream;
     strHttp: THttpClient;
   begin
     strHttp := THttpClient.Create;
     strHTML := TStringStream.Create;
     try
       strHttp.Get('http://www.DelphiCan.com', strHTML);
       TThread.Synchronize(nil,
         procedure
         begin
           Memo1.Text := strHTML.DataString;
         end);
     finally
       strHttp.free;
       strHTML.free;
     end;
   end).Start;

 Küçük bir ekleme yapayım. Mümkün mertebe Synchronize kullanmayın onun yerine Queue kullanın. Aksi durumda deadlock yaşayabilirsiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Memo bileşeni Duplicate veya Put hakkında yardım kofmaster 6 443 11-04-2020, Saat: 22:39
Son Yorum: kofmaster
  IDE hakkında sorular(F8 Debug,Otomatik tamamlama) 41linea41 6 555 10-03-2020, Saat: 20:07
Son Yorum: kodamelesi
  IHTMLSelectElement onChange olayı hakkında [ÇÖZÜLDÜ] kodamelesi 6 816 03-03-2020, Saat: 16:45
Son Yorum: kodamelesi
  Streaming hakkında Kerembacioglu 0 203 29-02-2020, Saat: 19:50
Son Yorum: Kerembacioglu
  Personel Yıllık İzin Hakediş Hesaplama Hakkında bkantur 2 679 04-10-2019, Saat: 18:15
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi