CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 631

631

Chương 16: Các giao diện và mẫu thông dụng

// resourceHandle = ...

}

// Destructor/Finalizer.

~DisposeExample() {

// Gọi phiên bản nạp chồng protected của Dispose

// và truyền giá trị "false" để cho biết rằng

// Dispose đang được gọi trong quá trình thu gom rác,

// chứ không phải bởi mã consumer.

Dispose(false);

}

// Hiện thực public của phương thức IDisposable.Dispose, được gọi

// bởi consumer của đối tượng để giải phóng các tài nguyên không-

// được-quản-lý một cách tất định.

public void Dispose() {

// Gọi phiên bản nạp chồng protected của Dispose và truyền

// giá trị "true" để cho biết rằng Dispose đang được gọi

// bởi mã consumer, chứ không phải bởi bộ thu gom rác.

Dispose(true);

// Vì phương thức Dispose thực hiện tất cả việc dọn dẹp cần

// thiết nên bảo đảm bộ thu gom rác không gọi destructor của lớp.

GC.SuppressFinalize(this);

}

// Phiên bản nạp chồng protected của phương thức Dispose. Đối số

// disposing cho biết phương thức được gọi bởi mã consumer (true),

// hay bởi bộ thu gom rác (false).

protected virtual void Dispose(bool disposing) {

if (!isDisposed) {

if (disposing) {

// Phương thức này được gọi bởi mã consumer. Gọi

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.