2009-10-20 28 views
8

Bạn định vứt bỏ một BitmapSource như thế nào?Cách thích hợp để vứt bỏ một BitmapSource

// this wont work because BitmapSource doesnt implement IDisposable 
using(BitmapSource bitmap = new BitmapImage(new Uri("myimage.png"))) 
{ 
} 
+0

[Liên quan] (https://stackoverflow.com/questions/8352787/how-to-free-the-memory-after-the-bitmapimage-is-no-longer-needed) – Goufalite

Trả lời

11

Bạn không phải hủy bỏ() BitmapSource. Không giống như một số lớp "hình ảnh" khác trong Framework, nó không bọc bất kỳ tài nguyên gốc nào.

Chỉ để nó thoát ra khỏi phạm vi và bộ thu gom rác sẽ giải phóng bộ nhớ của nó.

+0

ok. Đồng nghiệp của tôi đã đề cập rằng WPF được tăng tốc hoàn toàn dx và hình ảnh, vv được lưu trữ trong video. Đây chỉ là một tưởng tượng? Tôi là một lập trình viên winforms thời gian dài và bây giờ đang viết một mô-đun mới trong WPF vì vậy tôi cho rằng tôi cần phải vứt bỏ hình ảnh. –

+1

BitmapSource không phải là hình ảnh - nó được sử dụng để tạo hình ảnh. Tuy nhiên, đó là phương tiện lưu trữ pixel được quản lý. Loại khó hiểu, nhưng nó luôn luôn có giá trị kiểm tra. Nói chung, chỉ cần nhìn vào hệ thống phân cấp lớp - nếu nó không thực hiện IDisposable, bạn có thể tự do để cho GC lo lắng thay vì bạn. :) –

+0

Ngoại trừ nó, nếu đó là một WritableBitmap. –

Các vấn đề liên quan