2014-01-22 2 views
0

я получаю следующее сообщение об ошибке при попытке открыть диалоговое окно выбора файлов в .NET:ThreadStateException Ошибка на OpenFileDialog

Текущий поток должен быть установлен в режим одного потока квартиры (STA), прежде чем OLE вызовов могут быть сделаны. Убедитесь, что ваша основная функция имеет STAThreadAttribute, отмеченный на нем. Это исключение возникает только в том случае, если к процессу прикреплен отладчик.

Я попытался добавить STAThread() _ в начало модуля, но это не повлияло. Большинство решений этой ошибки вызывают добавление STAThread() _ к основному методу, но я не уверен, что основной метод находится в приложении 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 
+2

Почему этот помеченный ASP.NET? Где вы ожидаете появления этого диалогового окна? –

+0

Я ожидаю, что диалог появится в виде диалогового окна файла Windows, предлагающего пользователю выбрать файл. – StephenT

+1

Но 'cmdUploadNew_Click' является серверным кодом. Итак, он будет запущен на сервере ... http://stackoverflow.com/questions/4950948/openfiledialog-in-asp-net –

ответ

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 - Возвращайтесь проекта Свойства -> Application, и в "Объект запуска" выберите Sub Main

4 - почему основная часть:

«Каждое приложение Visual Basic должно содержать процедуру Main.» ............................ ...................................... Microsoft

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

Смежные вопросы