【发布时间】:2019-09-18 05:01:35
【问题描述】:
只有第一次 Navigaterecods() 起作用,第二次调用它会抛出异常:
“该进程无法访问该文件,因为它正被另一个进程使用”
文件流每次都在 sub 内部关闭,但它抛出相同的异常。 你能帮我解决这个问题吗?
谢谢 MD希瓦拉姆
Public Sub NavigateRecords()
Try
Dim fstrmImage As New FileStream("ASPE-Pyramid.jpg", FileMode.Create)
Dim blob As Byte() = DirectCast(DS.Tables("Pyramid").Rows(inc).Item(1), Byte())
fstrmImage.Write(blob, 0, blob.Length)
fstrmImage.Close()
fstrmImage = Nothing
PictureBox1.Image = Image.FromFile("ASPE-Pyramid.jpg")
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox1.Refresh()
TextBox1.Text = DS.Tables("Pyramid").Rows(inc).Item(2).ToString
TextBox2.Text = DS.Tables("Pyramid").Rows(inc).Item(3).ToString
TextBox3.Text = DS.Tables("Pyramid").Rows(inc).Item(4).ToString
TextBox4.Text = DS.Tables("Pyramid").Rows(inc).Item(5).ToString
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
【问题讨论】:
-
您应该将这些
TextBoxes绑定到您的DataTable而不是手动填充它们。 -
相当标准的故障模式,Image.FromFile() 使用内存映射文件对象锁定文件以优化图像访问。修复它的最简单方法是将语句替换为
New Bitmap("ASPE-Pyramid.jpg"),以便它在内存中复制图像数据。 -
您能简单介绍一下吗?我是 VB.NET 的新手。
-
你应该使用
fstrmImage.Dispose(),而不是设置为Nothing。 -
或者更好的是,将其包装在
Using块中。