【问题标题】:VB.NET image sharing violationVB.NET 图像共享冲突
【发布时间】:2015-09-15 18:51:26
【问题描述】:

我有一个 vb.net 代码,它有一个外部脚本(用 R 编写),它创建一个图像并将其传递给 vb.net 代码以在图片框中显示。当只使用一个实例时,这可以正常工作。

当显示此图像时,它似乎已被锁定在使用中。在通过脚本显示图像时尝试编辑图像会出现失败错误。尝试在绘图中对其进行编辑会给出“发生共享冲突”的更具描述性的错误。

该软件可以通过连接在网络中的多台不同计算机同时在多个实例中运行。处理图像意味着它不能显示在屏幕上(而是给出红十字图像),我尝试将图像作为原始图像的克隆加载到图片框中,然后处理原始图像 - 这会产生与原始图像相同的错误问题:

Dim someImage as bitmap = new bitmap(fileName)
pictureBox.image = someImage.clone()
someImage.dispose()

有没有办法让图像留在屏幕上,但释放它的访问权限,以便其他软件可以编辑它?

(如果在其他地方更改,我不需要图像自动更新。)

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    Clone() 不够好,需要对位图进行深拷贝。换句话说,不仅复制图像属性,而且复制像素数据。只需使用 Bitmap(Image) 构造函数即可完成:

        Using img = Image.FromFile(filename)
            If PictureBox1.Image IsNot Nothing Then PictureBox1.Image.Dispose()
            PictureBox1.Image = New Bitmap(img)
        End Using         '' File no longer locked here
    

    我添加了 Dispose() 调用,通常是必需的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-29
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2015-04-07
      • 2021-01-19
      相关资源
      最近更新 更多