Bagikan melalui


ChangeMonitor.Dispose Metode

Definisi

Merilis semua sumber daya yang digunakan oleh instans ChangeMonitor kelas saat ini.

Overload

Dispose()

Merilis semua sumber daya yang digunakan oleh instans ChangeMonitor kelas saat ini.

Dispose(Boolean)

Merilis semua sumber daya terkelola dan tidak terkelola dan referensi apa pun ke ChangeMonitor instans. Kelebihan beban ini harus diimplementasikan oleh kelas monitor perubahan turunan.

Keterangan

Metode Dispose ini digunakan untuk merilis instans ChangeMonitor dan sumber daya terkait. Metode publik Dispose dipanggil untuk mengoordinasikan proses pembuangan dengan peristiwa siklus hidup utama dari kelas monitor perubahan turunan (seperti inisialisasi), dan untuk merilis ChangeMonitor instans sehingga instans dapat dikumpulkan sampah. Metode Dispose ini diimplementasikan oleh kelas monitor perubahan turunan untuk membuang sumber daya yang dikelola dan tidak dikelola.

Dispose()

Sumber:
ChangeMonitor.cs
Sumber:
ChangeMonitor.cs
Sumber:
ChangeMonitor.cs

Merilis semua sumber daya yang digunakan oleh instans ChangeMonitor kelas saat ini.

public:
 virtual void Dispose();
public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()

Penerapan

Pengecualian

Inisialisasi tidak selesai di kelas monitor perubahan turunan yang disebut metode dasar Dispose() .

Keterangan

Metode ini Dispose memanggil Dispose metode kelas turunan hanya satu kali, pertama kali dipanggil. Panggilan berikutnya ke Dispose metode tidak berpengaruh. Setelah metode dipanggil, IsDisposed properti diatur ke true.

Kelebihan Dispose beban harus dipanggil untuk membuang ChangeMonitor instans. Berikut ini adalah aturan untuk memanggil metode buang:

  • Sebelum item dimasukkan ke dalam cache, pemanggil bertanggung jawab untuk membuang ChangeMonitor instans.

  • Setelah item cache dan ChangeMonitor instans yang terkait dengannya diteruskan ke cache, pelaksana cache yang harus memastikan bahwa itu Dispose dipanggil, bahkan jika penyisipan gagal.

  • Setelah item dan instans terkait diteruskan ChangeMonitor ke cache, pemanggil tidak boleh membuang dependensi karena ketika Dispose metode dipanggil, panggilan diperlakukan seolah-olah dependensi telah berubah. Akibatnya, OnChanged metode ini secara otomatis dipanggil.

  • Dengan mempertimbangkan aturan ini, Dispose metode harus dipanggil dengan salah satu cara berikut:

    • Pengguna harus memanggil Dispose metode kelebihan beban jika mereka memutuskan untuk tidak memasukkan instans monitor perubahan turunan ke dalam cache.

    • Implementasi cache bertanggung jawab untuk memanggil Dispose kelebihan beban jika implementasi mencoba memasukkan instans change-monitor ke dalam cache objek tetapi penyisipan gagal. Ketika upaya penyisipan menyebabkan pengecualian, implementasi cache harus membuang dependensi terkait.

    • Jika entri cache dihapus, implementasi cache juga harus membuang dependensi.

Implementasi OnChanged internal metode secara otomatis memanggil Dispose metode setelah memanggil panggilan balik yang terdaftar melalui NotifyOnChanged metode .

Catatan

Pembuangan otomatis ini selama pemecatan peristiwa hanya terjadi jika inisialisasi ChangeMonitor instans sebelumnya selesai.

Ketika konstruktor monitor perubahan turunan memanggil InitializationComplete metode , jika status monitor perubahan telah berubah (yaitu, status yang dipantau telah berubah ketika konstruktor masih aktif) maka InitializationComplete metode akan secara otomatis membuang monitor perubahan.

Catatan

Pengguna tidak boleh memanggil Dispose metode . Namun, Anda tidak dapat mencegah pengguna memanggil metode . Oleh karena itu, jika mereka melakukannya, OnChanged metode ini dipanggil. Dalam hal ini, entri cache diberi tahu seolah-olah dependensi telah berubah.

Untuk mencegah kelas turunan mengesampingkan Dispose metode, metode ini bukan implementasi antarmuka eksplisit.

Lihat juga

Berlaku untuk

Dispose(Boolean)

Sumber:
ChangeMonitor.cs
Sumber:
ChangeMonitor.cs
Sumber:
ChangeMonitor.cs

Merilis semua sumber daya terkelola dan tidak terkelola dan referensi apa pun ke ChangeMonitor instans. Kelebihan beban ini harus diimplementasikan oleh kelas monitor perubahan turunan.

protected:
 abstract void Dispose(bool disposing);
protected abstract void Dispose (bool disposing);
abstract member Dispose : bool -> unit
Protected MustOverride Sub Dispose (disposing As Boolean)

Parameter

disposing
Boolean

true untuk merilis sumber daya terkelola dan tidak terkelola dan referensi apa pun ke ChangeMonitor instans; false untuk merilis hanya sumber daya yang tidak dikelola. Ketika false diteruskan, Dispose(Boolean) metode ini dipanggil oleh finalizer utas dan referensi terkelola eksternal kemungkinan tidak lagi valid karena telah dikumpulkan sampah.

Keterangan

Ketika nilai disposing adalah true, semua sumber daya yang dikelola dan tidak dikelola dibuang dan referensi apa pun ke objek ini dirilis sehingga instans monitor perubahan turunan dapat dikumpulkan sampah. Dijamin bahwa metode dasar Dispose akan memanggil metode yang diimplementasikan Dispose hanya satu kali.

Catatan Bagi Implementer

Monitor perubahan harus menerapkan Dispose(Boolean) kelebihan beban untuk merilis semua sumber daya terkelola dan tidak terkelola saat nilai disposing adalah true. Metode Dispose(Boolean) kelebihan beban yang memiliki disposing nilai true hanya disebut satu kali, yaitu, ketika instans dibuang untuk pertama kalinya. Monitor perubahan tidak boleh memanggil Dispose(Boolean) kelebihan beban secara langsung. Monitor perubahan turunan dapat memanggil metode tanpa parameter Dispose() publik pada kelas dasar ChangeMonitor .

Atau, monitor perubahan dapat menerapkan metode finalizer. Dalam hal ini, finalizer dapat memanggil Dispose(Boolean) metode dan meneruskannya nilai disposingfalse. Namun, ini biasanya tidak perlu. Pemantauan untuk perubahan dependensi biasanya dilakukan oleh layanan yang mempertahankan referensi ke instans change-monitor. Referensi mencegah instans dikumpulkan dari sampah, dan karena itu membuat metode finalizer tidak perlu. Untuk menghindari kebocoran memori, ketika dependensi berubah, OnChanged(Object) metode membuang instans change-monitor (kecuali inisialisasi belum selesai).

Berlaku untuk