Yorumları: 45
Konuları: 11
Kayıt Tarihi: 29-09-2023
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 30
Başlangıç
Bir fonksiyon içerisinde farklı bir fonksiyon mevcut.
A fonksiyonu > A içinde B fonksiyonu > B içinde C fonksiyonu olan bir senaryoda;
A fonksiyonu içerisindeki B fonksiyonunu AnonymousThread olarak başlatıp buradan dönen sonucu (UI işlemi) Synchronize ile gerçekleştirdim. Bu şekilde silme işleminde takılma sorununu çözdüm. Deneme yanılma yaparak ilerliyorum.
Yorumları: 1.491
Konuları: 82
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 12.260
Üstad
(02-12-2024, Saat: 15:52)mcuyan Adlı Kullanıcıdan Alıntı: Android projede; Örneğin sunucudan çekilen data çok fazla ise; bu durum da bu hatayı alırsınız. En iyi çözüm hocalarımın bahsettiği gibi thread kullanmak..
TThread.CreateAnonymousThread(
procedure()
begin
TThread.Synchronize(TThread.CurrentThread,
procedure()
begin
//Çalışacak kodlar..
end);
end).Start;
Thread'in içindeki tüm kodu Synchronize ile sarmaladığınızda aslında thread kullanmanızın bir anlamı kalmaz, çünkü tüm kod main thread üzerinde çalışmış olur. Sadece ana thread'in yönettiği ortak alanlar, görsel kontroller vb şeylere erişim yapacağınız zaman Synchronize ya da daha iyisi Queue kullanmanız gerekir. Synchronize ana thread'e işletilecek kodu iletir ve ana thread'in cevap vermesini bekler yani blocked çalışır. Ana thread'iniz oluşturduğunuz thread'i bekliyor ise, oluşturduğunuz thread içinden yapacağınız Synchronize çağrımları da ana thread'i bekleyeceği için dead-lock oluşur. Bu nedenle Queue kullanmak daha mantıklıdır.
SendMessage ve PostMessage API metodlarının farkı gibi
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.422
Konuları: 77
Kayıt Tarihi: 20-03-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.3
- Delphi 10.2
- Delphi 7
- Lazarus / FPC
Rep Puanı: 4.010
Uzman
Queue Kullandığım da data'da lost olsa veya kopma olduğu zaman düzgün çalışmadı. Mecburen sync kullandım..
Yani DB'de bi bilgiye göre devamında işlemler yaptıracağım zaman data gelmediğinde hata oluşuyor. Synchronize sağlıklı yöntem diye tecrübe ettim.
// Bilgi paylaştıkça çoğalır..