Hệ thống: Windows XP SP3, .NET 3.5, RAM 4GB, Kép 1.6gHzLàm cách nào để đảm bảo WPF phát hành BitmapSource lớn từ Bộ nhớ?
Tôi có ứng dụng WPF tải và chuyển đổi (sử dụng hoạt ảnh của Storyboard) PNG cực lớn. Các PNG này có độ phân giải 8190x1080. Khi ứng dụng chạy nó xuất hiện để cache hình ảnh và bộ nhớ hệ thống từ từ tăng lên. Cuối cùng nó làm tắc nghẽn hệ thống và ném OutOfMemoryException.
Dưới đây là các bước Tôi hiện đang dùng để cố gắng giải quyết này:
1) Tôi đang loại bỏ các đối tượng BitmapSource từ ứng dụng
2) Tôi đang thiết lập các BitmapSource BitmapCacheOption tới Không khi tôi tải BitmapSource
3) Tôi đang đóng băng BitmapSource sau khi được tải.
4) Tôi đang xóa tất cả các tham chiếu đến Hình ảnh sử dụng nguồn cũng như bất kỳ tham chiếu nào đến chính nguồn đó.
5) Gọi thủ công GC.Collect() sau khi các bước trên đã hoàn tất.
Hy vọng tìm ra lý do tại sao WPF được treo vào bộ nhớ cho những hình ảnh này và một giải pháp có thể để đảm bảo rằng bộ nhớ được sử dụng để tải chúng được phục hồi đúng cách.
BitmapSource source = new BitmapSource() sẽ không biên dịch và tôi không chắc tại sao. Ném lỗi này: Lỗi Không thể tạo một thể hiện của lớp trừu tượng hoặc giao diện 'System.Windows.Media.Imaging.BitmapSource' – discorax
Ahh..it biên dịch khi tôi sử dụng BitmapImage thay vì BitmapSource. Bây giờ, điều đó sẽ gây ra vấn đề gì? :) – discorax
Cách tiếp cận này có vẻ hứa hẹn cho đến nay. Tôi sẽ tiếp tục thử nghiệm. – discorax