Ошибка OpenFileDialog? - PullRequest
       4

Ошибка OpenFileDialog?

1 голос
/ 15 ноября 2010

Это мой код при нажатии кнопки СОХРАНИТЬ:

OpenFileDialog myOpenfileDialog = new OpenFileDialog(); 
        myOpenfileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        myOpenfileDialog.FilterIndex = 2;
        myOpenfileDialog.RestoreDirectory = true;

        if (myOpenfileDialog.ShowDialog() == DialogResult.OK)
        {
            FileUploadData.SaveAs(myOpenfileDialog.FileName);//my file upload control taking the path to save the file to the selected location
        }   

Я получаю это исключение:

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

Ответы [ 4 ]

4 голосов
/ 15 ноября 2010

Что ж, сообщение кажется мне достаточно понятным - вам нужно использовать поток STA. Если вы пишете приложение для Windows Forms, вы должны сделать это, убедившись, что ваш метод Main имеет такой атрибут:

[STAThread]
static void Main(string[] args)
{
    ...
}

Если вы пишете приложение ASP.NET, вы не должны пытаться использовать элемент управления Windows Forms в своем коде. Я упоминаю об этом, потому что вы пометили свой вопрос как и winforms, так и asp.net - вам не следует смешивать код для двух.

1 голос
/ 15 ноября 2010

Ваше исключение довольно очевидно, просто пометьте метод Main атрибутом STAThread

РЕДАКТИРОВАТЬ:

Учитывая, что это приложение ASP.NET, вам необходимо использовать следующеена вашей странице ASPX, чтобы показать диалоговое окно открытия файла, позволяющее пользователю выбрать файл, я предполагаю, что именно это вы и хотели:

<input type=file name="fileToUpload">

  OR

<asp:FileUpload ID="FileUpload1" runat="server" />

Подробнее о контроле FileUpload: http://msdn.microsoft.com/en-us/library/aa479405.aspx

0 голосов
/ 15 ноября 2010

Дорогие все, я нашел соответствующий ответ по этой ссылке Загрузка файла с помощью диалога Сохранить как в ASP.NET

0 голосов
/ 15 ноября 2010

Не может использоваться для ASP.NET.Только для Winforms.
Только Winforms могут использовать модель квартиры с одним потоком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...