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

103

Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

// Tạo một ListModifier trong miền ứng dụng mới

// sẽ thay đổi nội dung của list trong vùng đệm dữ liệu.

domain.CreateInstance("03-08", "ListModifier");

// Nhận lại danh sách và hiển thị nội dung của nó.

foreach (string s in (ArrayList)domain.GetData("People")) {

Console.WriteLine(s);

}

// Nhấn Enter để thoát.

Console.ReadLine();

}

}

9.

9.

Gi i phóng assembly và mi n ng d ng

ề ứ

Gi i phóng assembly và mi n ng d ng

ề ứ

Bạn cần giải phóng các assembly hay các miền ứng dụng lúc thực thi.

Không có cách nào để giải phóng các assembly riêng lẻ. Bạn có thể giải phóng
toàn bộ một miền ứng dụng bằng phương thức tĩnh

AppDomain.Unload

, đồng thời

với việc giải phóng miền ứng dụng là tất cả các assembly đã được nạp vào miền
ứng dụng đó cũng được giải phóng.

Cách duy nhất để giải phóng một assembly là giải phóng cả miền ứng dụng mà nó đã được
nạp vào. Đáng tiếc, việc giải phóng một miền ứng dụng cũng sẽ giải phóng luôn tất cả các
assembly đã được nạp vào đó. Đây là một giới hạn yêu cầu bạn phải tổ chức và quản lý tốt cấu
trúc miền ứng dụng và assembly.
Khi giải phóng một miền ứng dụng bằng phương thức tĩnh

AppDomain.Unload

, bạn cần truyền

cho nó một tham chiếu

AppDomain

đến miền ứng dụng cần giải phóng. Bạn không thể giải

phóng miền ứng dụng mặc định do CLR tạo lúc startup. Đoạn mã dưới đây trình bày cách sử
dụng phương thức

Unload

.

// Tạo một miền ứng dụng mới.

AppDomain newDomain = AppDomain.CreateDomain("New Domain");

// Nạp assembly vào miền ứng dụng mày.

§

// Giải phóng miền ứng dụng.

AppDomain.Unload(newDomain);

Phương thức

Unload

chặn các tiểu trình mới đi vào miền ứng dụng được chỉ định và gọi

phương thức

Thread.Abort

trên tất cả các tiểu trình hiện đang chạy trong miền ứng dụng này.

Nếu tiểu trình gọi phương thức

Unload

hiện đang chạy trong miền ứng dụng cần giải phóng thì

một tiểu trình khác sẽ được khởi chạy để thực hiện quá trình giải phóng. Nếu có vấn đề trong

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.