Nếu bạn có một số khối mã mà bạn muốn ngăn chặn thực hiện khi đối tượng đang được thoát ra và làm sạch, một khóa có thể được sử dụng để ngăn chặn việc thực thi không?Điều gì xảy ra với Monitor.Enter mà không có một Monitor.Exit phù hợp?
Monitor.TryEnter(cleanupLock, ref acquiredLock);
TryEnter có thể được sử dụng để đảm bảo mã không được thực thi và vì nó không chờ khóa sẽ không có bế tắc.
Một chuỗi khác sẽ lấy khóa khi nó xác định rằng đã đến lúc tắt máy.
Monitor.Enter(cleanupLock);
Nếu thread dọn dẹp không bao giờ gọi
Monitor.Exit(cleanupLock);
sẽ này gây ra một vấn đề?
Đi ngược lại việc sử dụng thông thường là một đối số tốt chống lại mẫu này. –