none
请高手告诉我是哪个进程占用了资源,如何释放它

    问题

  • //WPF

    //使用ZXing.net编写简单的二维码应用

    //单击按钮将文本中的字符编成二维码

    private void bButton_Click(object sender, RoutedEventArgs e)

            {

    //图片文件路径

             string path = @"E:\个人文档\练习\ZXingNetQR\ZXingNetQR\bin\Debug\image1.bmp"

    //生成二维码

                System.Drawing.Bitmap bitmap = writer.Write(this.textBox.Text);

    //将二维码图片储存到路径path

                System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);

                bitmap.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp);

                fs.Close();

    //将path路径上的二维码图片在控件上显示

                System.Windows.Media.Imaging.BitmapImage bi = new BitmapImage();

                bi.BeginInit();

                bi.UriSource = new Uri(path, UriKind.Absolute);

                bi.EndInit();

                this.myImage.Source = bi;     

           }

    问题:第一次单击使用正常后,再单击执行抛异常说资源在另一个进程中占有。不知道是哪个进程,搞不懂。

    请教高手帮忙解决?

    2016年2月25日 3:33

答案

  • BitmapImage bitmapsource = new BitmapImage(); bitmapsource.BeginInit(); bitmapsource.UriSource = new Uri(@"...", ...); // The uri for the image file bitmapsource.CacheOption=BitmapCacheOption.OnLoad; bitmapsource.CreateOptions=BitmapCreateOptions.IgnoreImageCache; bitmapsource.EndInit(); image.Source = bitmapsource;

    将图像进行缓存,然后你就可以释放图像文件了


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    • 已标记为答案 joelylee 2016年2月25日 6:59
    2016年2月25日 6:39

全部回复

  • Bitmap 也实现了IDispose接口,把它也释放试一试

    using( System.Drawing.Bitmap bitmap = writer.Write(this.textBox.Text))
    {
    //将二维码图片储存到路径path
                using(System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite))
               {
                    bitmap.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp);
               }
    
    }


    2016年2月25日 3:47
  • using(Bitmap bitmap= bitmap = writer.Write(this.textBox.Text))

    using(System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite)) {

    bitmap.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp); }

    //然后并没什么有,仍然是同样异常


    • 已编辑 joelylee 2016年2月25日 5:16
    2016年2月25日 5:16
  • BitmapImage bitmapsource = new BitmapImage(); bitmapsource.BeginInit(); bitmapsource.UriSource = new Uri(@"...", ...); // The uri for the image file bitmapsource.CacheOption=BitmapCacheOption.OnLoad; bitmapsource.CreateOptions=BitmapCreateOptions.IgnoreImageCache; bitmapsource.EndInit(); image.Source = bitmapsource;

    将图像进行缓存,然后你就可以释放图像文件了


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    • 已标记为答案 joelylee 2016年2月25日 6:59
    2016年2月25日 6:39