ThreadStateException openfiledialog上的错误

时间:2014-01-22 22:07:28

标签: .net vb.net winforms

尝试在.NET中打开文件对话框时出现以下错误:

在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保您的Main函数标记了STAThreadAttribute。仅当调试器附加到进程时才会引发此异常。

我尝试将STAThread()_添加到模块的开头,但是没有效果。此错误的大多数解决方案都要求将STAThread()_添加到main方法中,但我不确定vb.NET应用程序中的主要方法是什么。任何人都可以帮助我吗?

抛出错误的函数的代码如下。谢谢。

Protected Sub cmdUploadNew_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdUploadNew.Click

    Dim FileName As String
    Dim FileDialog As New OpenFileDialog

    FileDialog.InitialDirectory = "C:\"
    FileDialog.Filter = "Excel files (*.xlsx)|*.xlsx"
    FileDialog.RestoreDirectory = True

    If FileDialog.ShowDialog() = DialogResult.OK Then

        FileName = FileDialog.FileName

    End If

End Sub

1 个答案:

答案 0 :(得分:1)

如果您的应用程序设置为“启用应用程序框架”,则可能没有Sub Main。 http://visualstudiomagazine.com/articles/2007/10/01/enable-the-application-framework-in-vb.aspx

1 - 转到项目属性 - >应用程序,然后取消选中“启用应用程序框架”。

2 - 将模块添加到您的应用程序并在该模块内添加

<STAThread()> _
Sub Main()
    Application.Run(New MyFirstForm())
End Sub

3 - 返回项目属性 - &gt;应用程序,然后在“启动对象”中选择Sub Main

4 - 为什么sub main:

“每个Visual Basic应用程序都必须包含一个名为Main的过程。” .................................................. ................微软

http://msdn.microsoft.com/en-us/library/ms235406.aspx