我在WPF中有一個問題,在應用程序的另一部分嘗試寫入圖像之前,窗口沒有在關閉之後釋放它的背景圖像文件上的文件鎖定。刪除一個窗口的背景圖像WPF
所以作爲一個例子;說我有一個WPF應用程序由3個窗口,1個「菜單」選擇窗口和其他2個組成。這兩個窗口創建一個ImageBrush
使用BitmapImage
作爲ImageSource
(相同圖像)。
窗口A中有一個按鈕,當按下時,通過將它們複製每遍用作原始ImageSource
該文件並創建一個新的ImageBrush
和設置Window.Background
到新刷的可用背景圖像週期。
窗口B只是使用ImageBrush
來繪製Window.Background
。
如果窗口A啓動,背景切換,關閉,然後啓動窗口B,一切都很好。
如果窗口B啓動,關閉,然後窗口A啓動並且背景切換它崩潰。試圖切換背景會拋出IOException
,因爲:
「該進程無法訪問文件'C:\ Backgrounds \ Background.png',因爲它正在被另一個進程使用。」
因此,窗戶B仍然必須以某種方式持有它!?我試圖做一個GC.Collect(); GC.WaitForPendingFinalizers();
看看是否能治癒這個問題,但事實並非如此。
這是燦爛的,謝謝你們倆! – Siyfion 2009-11-02 18:39:09