Makale numarası: 315528 - Son Gözden Geçirme: 11 Mayıs 2007 Cuma - Gözden geçirme: 2.6

Visual Basic 2005 veya Visual Basic. NET'te türetilmiş bir sınıf içinde Dispose yöntemini nasıl

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bir temel sınıf aşan bir sınıf yazar şekilde ayrılan kaynakları yayımlandıktan işlemek gerekir. Bunu yapmak için <a0></a0>, atma yöntemi'temel sınıfından türetilmiş sınıfları içinde geçersiz. Bu senaryoda, sık karşılaşılan sorunlar bu makalede anlatılmaktadır nasıl düzgün atma yöntemi geçersiz kılmak ve bazı aşağıdaki Visual Basic .NET Yardım makalede subtleties açıklığa kavuşturacak biçimde tasarlanmıştır:
http://msdn2.microsoft.com/en-us/library/fs2xkftw(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/fs2xkftw(vs.71).aspx)
Bu Yardım belgesinin atma yöntemi genel örnekleri ve hata işleme hakkında ayrıntılı bilgi için bakın.

Daha fazla bilgi

Aşırı yüklü bir atma yöntemleri kümesi içeren BIR temel sınıf gerekir. Aşağıdaki örnek kodu ilk örneğini parametresiz bir sürümdür ve ikinci örnek bir Boole parametresi kabul eder:
'Method that is called by Public to ensure TRUE is passed to Dispose
Public Overloads Notoverridable Sub Dispose()
    Dispose( TRUE )
    ' Take yourself off of the finalization queue.
    GC.SuppressFinalize(Me)
End Sub

'Method that does the actual disposal of resources
Protected Overloads Overridable Sub Dispose(ByVal disposing As Boolean)
    'Clean Up Resources
End Sub
				

Dispose() nesnenin nesne oluşturulduğu kodu aktiften zaman, olarak adlandırılan yöntemidir. Bir ortak yöntem budur ve sınıfının bir örneği var, bu nedenle, kullanılabilir. Dispose() yöntemi Dispose(Boolean) yöntemini çağırır ve DOğRU değeri geçirir. Sınıf kaynakları Temizleme işleminde Dispose(Boolean) yöntemi sorumludur.
Temel bir sınıftan türetilmiş sınıf, yalnızca Dispose(Boolean) yöntemi geçersiz kılındı gerekir. Tüm kaynak temizleme türetilmiş bir sınıf için geçersiz kılınmış bu yöntemde gerçekleştirilmez ve sonra Dispose(Boolean) yöntemi için bir temel sınıf olarak da adlandırılır. Aşağıdaki temel sınıf geçersiz kılma işlevi, temel bir örnektir:
Protected Overloads Overrides Sub Dispose(disposing As Boolean)
   'Clean Up Resources
   MyBase.Dispose( disposing )
End Sub
				
türetilmiş sınıf olduğundan, bu yöntem temel sınıfından devralınan bir Dispose() yöntemi gerekli değildir. Türetilmiş bir sınıf örneğinde Dispose() çağrıldığında Dispose() türetilmiş sınıf, yerine yalnızca bir taban sınıftaki Dispose(Boolean) kullanır. Türetilmiş bir sınıf Dispose(Boolean) yöntemi, temel sınıf Dispose(Boolean) yöntemini ça??r?r sonra önemlidir. Bu işlem, MyBase.Dispose(disposing) yöntemine göre yapılır. Temel sınıfın kaynakları da aktiften emin olmak için ilgili temel sınıfı <a1>Dispose(Boolean)</a1> yöntemini çağrılmalıdır.
Dispose() nesnenin ve DOğRUDispose(Boolean) yönteme geçirilen emin olmak için elden çıkarma için genel erişim için bir giriş noktası tasarlanmıştır. Yalnızca Dispose(Boolean) yöntemi çal??ma zaman? veya Finalize yöntemi tarafından çağrıldığında YANLıŞ geçirilmesi. YANLıŞ geçirildiğinde, yalnızca yönetilmeyen kaynakları atıldı. Doğru geçirildiğinde, yönetilmeyen yönetilen ve kaynakları aktiften.
Visual Studio geliştirme ortamı Dispose() yöntemi (örneğin, Devralan System.Windows.Forms.TextBox) bir <a0>Sistem nesnesi devralan bir sınıf içinde geçersiz kılmak için kod ekler. Bu menülerden (varsayılan olarak <a1>Kod</a1> penceresinin üstündeki) Geçersiz Kılınanlar seçip ardından Dispose() gerçekleştirilir. Eklenen kodu aşağıdaki gibi arar:
Public Overloads Overrides Sub Dispose()
   'Clean Up Resources
End Sub
				
Bu, hiçbir derleme hataları neden oldu. Türetilmiş sınıf, çalışma zamanında yüklendiğinde aşağıdakine benzer bir çalışma zamanı hata iletisini alırsınız:
'System.TypeLoadException' türünde işlenmeyen bir özel durum system.windows.forms.dll oluştu.

Ek bilgi: Yöntem uygulamasında başvurulan Beyanname son bir yöntem olabilir. Türü: ClassLibrary1.UserControl1. Derleme: atma.
Not: Type değeri önceki örnekte, farklı olacaktır. Yalnızca hatalı geçersiz kılınmış bir Dispose() yöntemi kullanmayı denediği sınıfın adını olmasıdır.
Bu sorunu gidermek için <a0></a0>, yalnızca Dispose() yerine Dispose(Boolean) yöntemini tekrar ve arama temel sınıf Dispose(Boolean) yöntemine yapılan ve DOğRU kendisine geçirilen emin olun.

Not: Visual Basic .NET veya Visual Basic 2005, Virtual anahtar sözcüğünü C# ve C++ gibi Overridable anahtar kullanılır. Varsayılan olarak, NotOverridable yöntemlerdir.

Referanslar

Ilgili Yardım konuları:

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbvs2005swept kbvs2005applies kberrmsg kbinfo KB315528 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:315528  (http://support.microsoft.com/kb/315528/en-us/ )