Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从路径中删除图像时在vb.net中获取错误_C#_Vb.net_Winforms_Picturebox - Fatal编程技术网

C# 从路径中删除图像时在vb.net中获取错误

C# 从路径中删除图像时在vb.net中获取错误,c#,vb.net,winforms,picturebox,C#,Vb.net,Winforms,Picturebox,我正在处理windowes窗体应用程序..在show button事件中,我编写了如下代码: Me.PictureBox1.Load("C:/Signature.tif") PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd

我正在处理windowes窗体应用程序..在show button事件中,我编写了如下代码:

Me.PictureBox1.Load("C:/Signature.tif")
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D
Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
Dim ms As New MemoryStream
Dim byt() As Byte
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
byt = ms.GetBuffer
Dim sqlstr As String = "Update Visitorlogo_tbl set signimage=@pic,exittime='" & exittime & "',status=2 where PassNo='" & txtvisitorid.Text & "'"
Dim cmd1 As New SqlCommand(sqlstr, con.connect)
cmd1.Parameters.Add("@pic", SqlDbType.Image)
cmd1.Parameters("@pic").Value = byt
cmd1.ExecuteNonQuery()
con.disconnect()
PictureBox1.Image = Nothing
If System.IO.File.Exists("C:/Signature.tif") Then
   System.IO.File.Delete("C:/Signature.tif")
End If
然后单击save按钮,我编写了如下代码:

Me.PictureBox1.Load("C:/Signature.tif")
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D
Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
Dim ms As New MemoryStream
Dim byt() As Byte
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
byt = ms.GetBuffer
Dim sqlstr As String = "Update Visitorlogo_tbl set signimage=@pic,exittime='" & exittime & "',status=2 where PassNo='" & txtvisitorid.Text & "'"
Dim cmd1 As New SqlCommand(sqlstr, con.connect)
cmd1.Parameters.Add("@pic", SqlDbType.Image)
cmd1.Parameters("@pic").Value = byt
cmd1.ExecuteNonQuery()
con.disconnect()
PictureBox1.Image = Nothing
If System.IO.File.Exists("C:/Signature.tif") Then
   System.IO.File.Delete("C:/Signature.tif")
End If

在保存图像时,图像已被保存,但在此之后,我想从该路径中删除图像。。当转到这一行时:
System.IO.File.Delete(“C:/Signature.tif”)
我收到错误:进程无法访问文件“C:\Signature.tif”,因为它正被另一进程使用,因为错误消息表明映像已被另一进程打开。例如,您是否在图形程序中打开了图像

您是否有另一个在后台运行的应用程序实例已锁定图像以供读取


如果是这样,请关闭其他程序。

问题可能在这里

Me.PictureBox1.Load("C:/Signature.tif")
试试这个

Me.PictureBox1.Image = new Bitmap("C:\Signature.tif");
更新:

PictureBox1.Load()
方法将从给定位置加载文件,并将文件路径存储在
PictureBox.ImageLocation
属性中。使用此方法,应用程序将打开该图像并锁定,以便其他用户无法修改或读取它


PictureBox1.Image=新位图(“文件路径”)将从给定的文件路径创建另一个图像对象,并且不会锁定原始图像对象。此方法不会从给定的文件位置加载原始图像。因此,
PictureBox1.ImageLocation
属性将不会在此处设置。如何访问和修改该图像。

PictureBox将保持文件打开。因此,您可以使用@Shell建议的修复程序在读取内容后释放文件。此行为是由PictureBox设计的

下面是根据知识库文章改编的变通方法

Using fs as New System.IO.FileStream("C:\Signature.tif", IO.FileMode.Open, IO.FileAccess.Read)
    PictureBox1.Image = System.Drawing.Image.FromStream(fs)
End Using

你可以通过解释原因来更好地回答这个问题。