12.07.2015 Views

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

bu döküman kaan aslan tarafından c ve sistem ... - Kitabxana

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

{if(disposing){//managed kaynakları boşalt}// unmanaged kaynakları boşalt}public void Dispose(){Dispose(true);}~B(){Dispose(false);}//...}Buradaki bir problem kaynakların Dispose fonksiyonuyla boşaltılmasıyla ortaya çıkmaktadır.B b = new B();//...b.Dispose();b nesnesi için Dispose edildiği halde yine bitiş fonksiyonu çağrılacaktır. Bitiş fonksiyonu ikinci kezunmanaged kaynakların boşaltılmasına yol açacaktır. Boşaltılmış kaynakların yeniden boşaltılmayaçalışması soruna yol açar. Bunu çözmenin bir yolu bir sınıf içinde bir bayrak(flag) tutarak <strong>bu</strong>nuengellenmesidir. Fakat daha iyi bir yöntem bitiş fonksiyonunun çağrılmasını engellemektir. Buişlem GC sınıfının SuppressFinalize fonksiyonuyla yapılır.public static void SuppressFinalize(object obj)O halde yukarıdaki kodun şu şekilde düzeltilmesi gerekir.class A{//...}class B{private A m_a;//...public B(){m_a = new A();//...}//...}public void Dispose(bool disposng){if(disposing){//managed kaynakları boşalt3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!