我在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