none
大家帮忙看看这段代码有什么问题(vb.net)?? RRS feed

  • 问题

  • Private Sub BtBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtBack.Click
    
            Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Picture.mdb;Persist Security Info=True;Jet OLEDB:Database Password=lt;"
    
            Dim dbConnection As OleDbConnection = New OleDbConnection(dbConnectionString)
    
            dbConnection.Open()
    
            Dim di As New IO.DirectoryInfo(Application.StartupPath & "\picturetemp")
    
            ' 创建一个数组代表当前目录中的文件.
    
            Dim fi As IO.FileInfo() = di.GetFiles()
    
            '  打印出当前目录中的文件的名称 
    
            Dim fiTemp As IO.FileInfo
    
            Dim j As Integer = 1
    
            If num = 1 Then
    
                MsgBox("已经是第一条记录了")
    
            Else
    
                For Each fiTemp In fi
    
                    If j = num - 1 Then
    
                        'MsgBox(fiTemp.Name)
    
                        PictureBox1.Image = Image.FromFile(Application.StartupPath & "\picturetemp\" & fiTemp.Name)
    
                        '显示图片信息
    
                        Dim i As Integer
    
                        For i = 1 To Len(fiTemp.Name)
    
                            If Mid(fiTemp.Name, i, 1) = "@" Then
    
                                id = Mid(fiTemp.Name, i + 1, Len(fiTemp.Name) - i)
    
                                Exit For
    
                            End If
    
                        Next
    
                        Dim dbcommand1 As OleDbCommand
    
                        dbcommand1 = New OleDbCommand("select piclx,picname,pictime,picformat,picdescription from picInfo where picid=" & id, dbConnection)
    
                        Dim dr1 As OleDbDataReader = dbcommand1.ExecuteReader
    
                        If dr1.Read Then
    
                            Labellx.Text = dr1("piclx")
    
                            Labelname.Text = dr1("picname")
    
                            Labelformat.Text = dr1("picformat")
    
                            Labeltime.Text = dr1("pictime")
    
                            Labeldes.Text = dr1("picdescription")
    
                        End If
    
                        Exit For
    
                    End If
    
                    j = j + 1
    
                Next
    
                num = num - 1
    
            End If
    
            dbConnection.Dispose()
    
            dbConnection.Close()
    
        End Sub
    
    
    大家好,各位大侠帮我看看我这段代码有什么问题,为什么在执行这段代码后,再执行另外一段代码删除picturetemp文件夹时,就会提示错误:文件夹内的某个文件正由另一进程使用,因此该进程无法访问该文件
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    • 已编辑 litianlt 2009年8月31日 3:12
    2009年8月31日 2:53

答案

  • 你好,在另一段代码的开始我就用下面这段代码释放image了
    If Not (PictureBox1.Image Is Nothing) Then
                PictureBox1.Image.Dispose()
                PictureBox1.Image = Nothing
            End If


    昨夜西风凋碧树,独上高楼,望尽天涯路!

     For Each fiTemp In fi


    你读取了n次  只把最后一个释放了
    恭喜自己5星用户达成
    • 已标记为答案 litianlt 2009年8月31日 13:18
    2009年8月31日 3:55
    版主

全部回复

  • 很想帮助您,但我不懂VB,抱歉
    努力!奋斗
    2009年8月31日 2:56
  • 你好 因为你使用了 Image.FromFile

    但在执行另外一段代码之前却没有将Image释放,Image是实现了IDisposable接口的


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月31日 3:13
    版主
  • 你好,在另一段代码的开始我就用下面这段代码释放image了
    If Not (PictureBox1.Image Is Nothing) Then
                PictureBox1.Image.Dispose()
                PictureBox1.Image = Nothing
            End If


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月31日 3:33
  • 你好,在另一段代码的开始我就用下面这段代码释放image了
    If Not (PictureBox1.Image Is Nothing) Then
                PictureBox1.Image.Dispose()
                PictureBox1.Image = Nothing
            End If


    昨夜西风凋碧树,独上高楼,望尽天涯路!

     For Each fiTemp In fi


    你读取了n次  只把最后一个释放了
    恭喜自己5星用户达成
    • 已标记为答案 litianlt 2009年8月31日 13:18
    2009年8月31日 3:55
    版主
  • 哦,非常感谢,一语惊醒梦中人
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月31日 13:18