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;
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
  or komutu hakkinda sadikacar60 1 120 12-04-2024, Saat: 17:17
Son Yorum: sso
  AES Şifreleme Hakkında tmrksmt 18 1.488 14-02-2024, Saat: 10:42
Son Yorum: tmrksmt
  TDictionary kullanımım hakkında yhackup 3 453 09-02-2024, Saat: 15:58
Son Yorum: SimaWB
  TfrxReport Rapor dizaynı hakkında yhackup 2 283 24-01-2024, Saat: 11:35
Son Yorum: yhackup
  EdgeBrowser Hakkında bydelphi 2 544 19-11-2023, Saat: 10:21
Son Yorum: bydelphi



Konuyu Okuyanlar: 1 Ziyaretçi