Tôi có một lớp trình tạo để tạo một cá thể thực hiện IDisposable. Bất cứ khi nào mục để xây dựng đã có trong bộ nhớ cache, trình xây dựng sẽ trả về cá thể đó thay thế. Câu hỏi của tôi là, bộ nhớ cache sẽ gọi phương thức Dispose() trên các mục IDisposable nó chứa khi chúng bị loại bỏ hoặc tôi có phải mã hóa rõ ràng hành vi đó trên CacheItemPolicy.RemovedCallback gọi lại không?Liệu System.Runtime.Caching.MemoryCache có vứt bỏ các mục IDisposable khi bị đuổi không?
7
A
Trả lời
8
Không được gọi số Dispose
. Nó rất dễ dàng để kiểm tra.
public class TestClass : IDisposable
{
public void Dispose()
{
Console.WriteLine("disposed");
}
}
MemoryCache _MemoryCache = new MemoryCache("TEST");
void Test()
{
_MemoryCache.Add("key",
new TestClass(),
new CacheItemPolicy()
{
AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10),
RemovedCallback = (_) => { Console.WriteLine("removed"); }
});
}
Các vấn đề liên quan
- 1. Lớp này triển khai IDisposable như thế nào nếu nó không có phương thức Vứt bỏ?
- 2. IEnumerator: Phương pháp Vứt bỏ trống có bình thường không?
- 3. Tôi có cần Vứt bỏ() hoặc Đóng() một EventWaitHandle không?
- 4. Tôi có nên vứt bỏ Mutex không?
- 5. Tôi có phải vứt bỏ Process.Start (url) không?
- 6. Các vấn đề sau khi vứt bỏ DbContext
- 7. Khi nào cần vứt bỏ System.Threading.Task với nhiệm vụ con?
- 8. Phiên chứa các mục thực hiện IDisposable
- 9. Tháo các bộ xử lý khi vứt bỏ vật thể
- 10. Vứt bỏ mẫu sau khi đóng
- 11. C# Vứt bỏ trừu tượng phương pháp
- 12. Vứt bỏ một HtmlControl
- 13. Vứt bỏ một thành phần không khi một biểu mẫu được xử lý?
- 14. Vứt bỏ các trang đơn trên lối ra ứng dụng với Ninject
- 15. Có cần phải vứt bỏ DbCommand sau khi sử dụng không?
- 16. Làm thế nào để vứt bỏ các đối tượng có các phương thức không đồng bộ được gọi là?
- 17. Giữ một MemoryMappedFile Alive sau khi vứt bỏ
- 18. lý do tại sao không có phương pháp Vứt bỏ trên HttpWebResponse
- 19. Việc đóng kết nối cơ sở dữ liệu trong phương thức Vứt bỏ có đúng không?
- 20. Tại sao os.path.join vứt bỏ các đối số?
- 21. Visual Studio có thể cảnh báo tôi khi tôi quên bỏ một đối tượng IDisposable không?
- 22. Cách thích hợp để vứt bỏ một BitmapSource
- 23. RavenDb Bỏ qua mục khi không có điều kiện lọc
- 24. C# sql gì cần vứt bỏ
- 25. Làm thế nào để vứt bỏ một danh sách các vật dụng dùng một lần?
- 26. Tôi có nên bận tâm về việc vứt bỏ các vật thể chia sẻ suốt đời của quá trình không?
- 27. Vứt bỏ một lớp Proxy Dịch vụ Web?
- 28. ehcache không loại bỏ phần tử từ bộ nhớ trên đuổi
- 29. IDisposable, ObjectDisposedException, và các loại an toàn
- 30. DBCP: removeAbandoned VS đuổi
@RobSiklos Vui lòng không sửa mã trước khi thử nghiệm. Đúng vậy. Lambda yêu cầu một tham số mà tôi không sử dụng. Tôi đã trả lời câu trả lời. – I4V
rất rất xin lỗi - Tôi nghĩ đó là lỗi đánh máy – RobSiklos
Tôi sẽ giữ thử nghiệm này xung quanh như một thử nghiệm đơn vị, các phiên bản sau của khung có thể thay đổi hành vi này, và bạn sẽ thích một thử nghiệm cho thấy rằng điều này đã thay đổi! –