VB.NET 参数无效

VB.NET Parameter is not valid

我已经使用 dotnetbar devcomponents advanced treeview 为我的一个项目创建了多个目录树。功能方面,一切正常。

我现在已经将图像添加到目录文件节点(例如,如果是 pdf 文件,则为 pdf 图像)并发布了应用程序。该应用程序第一次在任何机器上运行时没有任何错误,但是一旦我关闭此文件管理表单(我有一个带有按钮的控制面板表单,这是初始启动表单。按钮将我带到其他表单。单击按钮时,它隐藏控制面板并通过 showdialog 显示相应的表单 - 文件管理表单是这些按钮之一)并再次重新打开它 - 我收到以下错误:

parameter_is_not_valid

然后加载节点失败,尝试几次后,出现 Microsoft .Net Framework window 并结束应用程序。

我从资源文件中获取图像。请看出现错误的LoadAllSubDirectoriesFiles的代码:

    Private Sub LoadAllSubDirectoriesFiles(ByVal uParent As DevComponents.AdvTree.Node)
    ' Initialise Error Checking
    Dim uStackframe As New Diagnostics.StackFrame
    Dim ufile As IO.FileInfo = Nothing
    Try

        If uParent.Name.Length <> 248 Then

            Dim files As IO.FileInfo() = uParent.Tag.GetFiles()

            For Each file As IO.FileInfo In files
                If (Not file.Attributes.ToString.Contains("Hidden")) Then
                    Dim uNode As DevComponents.AdvTree.Node = New DevComponents.AdvTree.Node()
                    uNode.Tag = file
                    uNode.Name = file.FullName.ToLower
                    uNode.Text = file.Name
                    If file.Extension = ".msg" Then
                        uNode.Image = My.Resources.Resources.Mail3
                    ElseIf file.Extension = ".txt" Then
                        uNode.Image = My.Resources.Resources.Document
                    ElseIf file.Extension = ".pdf" Then
                        uNode.Image = My.Resources.Resources.pdf
                    ElseIf file.Extension = ".doc" OrElse file.Extension = ".docx" Then
                        uNode.Image = My.Resources.Resources.doc
                    ElseIf file.Extension = ".xlsx" Then
                        uNode.Image = My.Resources.Resources.excel
                    ElseIf file.Extension = ".pub" Then
                        uNode.Image = My.Resources.Resources.publisher
                    ElseIf file.Extension = ".pptx" Then
                        uNode.Image = My.Resources.Resources.powerpoint
                    ElseIf file.Extension = ".bmp" OrElse file.Extension = ".png" OrElse file.Extension = ".jpg" OrElse file.Extension = ".gif" OrElse file.Extension = ".tif" Then
                        uNode.Image = My.Resources.Resources.bitmap_image
                    ElseIf file.Extension = ".zip" OrElse file.Extension = ".rar" Then
                        uNode.Image = My.Resources.Resources.zip
                    Else
                        uNode.Image = My.Resources.Resources.unknown
                    End If
                    uNode.DragDropEnabled = True
                    uParent.Nodes.Add(uNode)
                End If
            Next
        End If
    Catch ex As Exception
        ' Catch Error
        If Err.Number <> 0 Then
            WriteAuditLogRecord(uStackframe.GetMethod.DeclaringType.FullName, uStackframe.GetMethod.Name.ToString, "Error", ex.Message & vbCrLf & vbCrLf & ex.StackTrace, 0)
            MsgBox("System Error Ref: " & sAuditID & vbCrLf & uStackframe.GetMethod.DeclaringType.FullName & " / " & uStackframe.GetMethod.Name.ToString & vbCrLf & ex.Message & vbCrLf & vbCrLf & ex.StackTrace & Chr(13) & sErrDescription & vbCrLf & vbCrLf & "Press Control + C to copy this error report", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Business Management System - Unexepected Error Ref: " & sAuditID)
        End If

    Finally
        ' CleanUp

    End Try

End Sub

我已经花了 2 天时间试图找出原因并解决这个问题。有帖子谈到图像被处置并且无法检索图像参考 [ http://blog.lavablast.com/post/2007/11/29/The-Mysterious-Parameter-Is-Not-Valid-Exception.aspx ] ,在处置之前克隆图像等。 我已经进行了处理和克隆,但错误仍然存​​在。一直在尝试其他一些事情,但仍然没有成功。

有什么错误的建议吗?

编辑 1 在关闭表单之前,我清除了所有的树节点,然后使用 Me.Close()

    Private Sub tsbClose_Click(sender As Object, e As EventArgs) Handles tsbClose.Click
    atRootFolder.Nodes.Clear()
    atAllDirectories.Nodes.Clear()
    atScannedFiles.Nodes.Clear()
    atFiles.Nodes.Clear()
    atInbox.Nodes.Clear()
    atSent.Nodes.Clear()
    Me.Close()
End Sub

编辑 2 我的树视图有数百个节点、子节点等。请查看我的文件管理表单的图像(这是第一次加载,没有错误)由于客户端机密性,我不得不隐藏文本,但我希望它有意义.每张图片都是一个节点。

imgur.com/QQ2FzFV

我曾尝试使用 GC.Collect 来查看它是否有效,结果令人惊讶。可悲的是它在一台机器上工作而在另一台机器上没有。因此,我没有直接从我的资源中调用图像,而是将所有需要的图像存储在一个图像列表中,并将其附加到我的树视图中。它就像一个魅力。