Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Thread.FFatalException (TJSON)
#1
Thread içerisinde kullandığım serviste işim biten TJSON nesnesini boşaltmak isteğimde kendimi burada buluyorum sebebi ne olabilir ?


 
var
  errors :TJSONObject;
  items: TJSONArray;
begin         
if Assigned(Body.Values['errors']) then
         begin
            items    := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(Body.GetValue('errors').ToString),0) as TJSONArray;
            errors   := items.Get(0) as TJSONObject;
            raise Exception.Create(errors.GetValue('faultMessage').Value);
         end;
***
bla bla bla


Destroy ve FreeAndNil yaparken kendimi aşağıdaki kod bloğunda buluyorum.

   
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#2
Merhaba,
" TJSON nesnesini boşaltmak isteğimde... " bunu hangi yöntemle (yıkıcı kod bölümünü yazmamışsınız) yapıyorsunuz?
Mantıken oluşturduğunuz bir sınıf veya tipi yok etmeniz daha doğru olacaktır.
Oluşturmadan yok etmeye çalıştığınız bir tip var ise hata üretme ihtimali oldukça fazladır.
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
#3
Destroy ve FreeAndNil  işlemlerim bu şekilde, bu objeler create oluyor içerisindeki bilgileri alıyorum sonrasında yok edyorum

     
*
*
*
finally
if Assigned(items) then
        FreeAndNil(items);
      //  items.Destroy;

     if Assigned(errors) then
       FreeAndNil(errors);
     //  errors.Destroy;
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#4
Kullandığınız tüm JSON objelerinin yok olması için yalnızca items'ı yok etmeniz yeterli olacaktır.
if Assigned(items) then
       FreeAndNil(items);
Diğer nesneniz (errors), items'ı referans aldığı için Items'in yok edilmesi durumunda kendisi de yok olacaktır.
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
(04-03-2019, Saat: 09:55)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.Kullandığınız tüm JSON objelerinin yok olması için yalnızca items'ı yok etmeniz yeterli olacaktır.
if Assigned(items) then
       FreeAndNil(items);
Diğer nesneniz (errors), items'ı referans aldığı için Items'in yok edilmesi durumunda kendisi de yok olacaktır.

ilk başta öyle idi memoryleak var diye uyardı beni ide
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#6
(04-03-2019, Saat: 10:39)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.
(04-03-2019, Saat: 09:55)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.Kullandığınız tüm JSON objelerinin yok olması için yalnızca items'ı yok etmeniz yeterli olacaktır.
if Assigned(items) then
       FreeAndNil(items);
Diğer nesneniz (errors), items'ı referans aldığı için Items'in yok edilmesi durumunda kendisi de yok olacaktır.

ilk başta öyle idi memoryleak var diye uyardı beni ide

Bug olabilir. Sanırım Seattle sürümünde de vardı. Delphi 10.1 sürümü ile birlikte bu sorun düzeltilmişti diye hatırlıyorum.
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
#7
   

Delphi 10.2 UP3 sürümü
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#8
(04-03-2019, Saat: 11:14)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.Delphi 10.2 UP3 sürümü

Paylaştığınız resmin sol tarafında bulunan Local Variable penceresinde durum net görünüyor. 
Nil olan objeler var. Onlar serbest bırakılmış. Yok etme metodu uygulanamaz. 
Tahminimce bug devam ediyor.
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
#9
(04-03-2019, Saat: 11:03)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.
(04-03-2019, Saat: 10:39)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.ilk başta öyle idi memoryleak var diye uyardı beni ide

Bug olabilir. Sanırım Seattle sürümünde de vardı. Delphi 10.1 sürümü ile birlikte bu sorun düzeltilmişti diye hatırlıyorum.

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. bu sorundan mı bahsediyorsun @Fesih ARSLAN  hocam. Bu sorun'un 10.2 Release 1 ile düzeldiğini söylüyorlardı ama  Rolleyes
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Anonymous Thread & Exception Tuğrul HELVACI 11 472 06-11-2019, Saat: 18:02
Son Yorum: ismailkocacan
  Thread içerisinde Tstrings & TStringList yhackup 2 208 10-09-2019, Saat: 22:45
Son Yorum: yhackup
  Thread içerisinde sleep kullanımı berk06 1 264 26-08-2019, Saat: 11:36
Son Yorum: Tuğrul HELVACI
  REST.Json, TJSon.JsonToObject sorunsalı Gürcan 14 1.245 27-05-2019, Saat: 11:33
Son Yorum: SimaWB
  Thread osiso 17 1.435 06-03-2019, Saat: 15:00
Son Yorum: edo



Konuyu Okuyanlar: 1 Ziyaretçi