C# WPF:当我';我在展示它?

C# WPF:当我';我在展示它?,c#,wpf,image,C#,Wpf,Image,我正在尝试执行此操作,但程序引发此异常: mscorlib.dll中发生类型为“System.IO.IOException”的未处理异常 其他信息:进程无法访问文件“C:\Users\Roy\documents\visual studio 2010\Projects\Assignment3\Assignment3\bin\Debug\Images\Mystry.jpg”,因为其他进程正在使用该文件 有没有办法在它打开时使用它 代码: 两件事 1) 您发布的代码在FileStream中没有usin

我正在尝试执行此操作,但程序引发此异常:

mscorlib.dll中发生类型为“System.IO.IOException”的未处理异常

其他信息:进程无法访问文件“C:\Users\Roy\documents\visual studio 2010\Projects\Assignment3\Assignment3\bin\Debug\Images\Mystry.jpg”,因为其他进程正在使用该文件

有没有办法在它打开时使用它

代码:

两件事

1) 您发布的代码在FileStream中没有using语句,也没有对其调用Dispose


2) 无论哪段代码显示您试图保存的图片,都必须使用FileAccess.Read,因为只有一段代码可以在文件上持有写锁。更好的是,如果是您自己的程序显示文件,只需将图像缓存到内存中,并根据内存中的字节显示图像。然后,您将不会锁定该文件,并且可以在以后对其执行任何您想要的操作…

只是好奇您是否仍然有问题
你试过以下方法吗

if (imgAddMessage.Source != null)
{
    string imageDirectory = "pack://application:,,,/Images";
    BitmapImage src = (BitmapImage)imgAddMessage.Source;
    if (!Directory.Exists(imageDirectory))
        Directory.CreateDirectory(imageDirectory);

    using (FileStream stream = new FileStream(Path.Combine(imageDirectory, imageName), FileMode.Create, FileAccess.ReadWrite))
    {
        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(src));
        encoder.Save(stream);
    }
}

正如@Marco所说,您必须具有读/写权限

您可以发布您的代码吗?这会有所帮助。您可以创建一个图像副本来使用吗?我假设您在尝试创建
文件流
时遇到异常。该文件实际上是否在另一个程序中打开?或者在你的节目里?如果进程以独占访问权限打开文件,您将无法对其进行写入。
if (imgAddMessage.Source != null)
{
    string imageDirectory = "pack://application:,,,/Images";
    BitmapImage src = (BitmapImage)imgAddMessage.Source;
    if (!Directory.Exists(imageDirectory))
        Directory.CreateDirectory(imageDirectory);

    using (FileStream stream = new FileStream(Path.Combine(imageDirectory, imageName), FileMode.Create, FileAccess.ReadWrite))
    {
        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(src));
        encoder.Save(stream);
    }
}