Delphi Can

Orjinalini görmek için tıklayınız: AsyncTask Hakkında
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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.
(28-08-2016, Saat: 10:19)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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.
  • Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
  • Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
  • Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
  • Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
  • Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Teşekkürler bu konuyu inceleyeceğim.
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;
(29-08-2016, Saat: 17:17)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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.