2010-11-15 70 views
1

這是我在SAVE按鈕的點擊代碼:OpenFileDialog錯誤?

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 
     } 

我得到這個異常:

OLE之前
(STA)模式

當前線程必須設置爲單線程單元調用可以製成。確保您的Main函數具有標記的STAThreadAttribute。只有在調試器連接到進程時纔會引發此異常。 這是一個threadStateException異常

+0

您已經標記了與asp.net *和*的WinForms的問題,但沒有說明這是否是一個Web應用,在那裏你不知何故試圖使用Windows窗體控件或Windows窗體應用程序。請在問題中添加更多細節。 – 2010-11-15 07:57:00

+0

這是一個asp.net應用程序,只在我使用System.Windows.Forms來使用類OpenFileDialog – NayeemKhan 2010-11-15 08:45:02

+1

問題是你不能。 Winforms不適用於ASP.NET,而適用於Winforms應用程序。 – 2010-11-15 12:34:20

回答

4

那麼,這個消息似乎對我來說合理清晰 - 你需要使用STA線程。如果你正在寫一個Windows窗體應用程序,你這樣做是通過確保您的Main方法裝飾有這樣一個屬性:

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

如果你正在寫一個ASP.NET應用程序,你不應該首先嚐試在代碼中使用Windows窗體控件。我提到這個是因爲你用標記了你的問題winformsasp.net - 你不應該爲這兩者混合使用代碼。

+0

@Jon:你一直在毆打我的答案,我不在這裏...看到你在twittter上。 – ace 2010-11-15 07:43:29

+0

@Jon:這是一個asp.net應用程序,而不是獲勝形式。我在我的應用程序中使用了System.Windows.Forms,因此我應該可以訪問OpenFileDialog類並使用它來瀏覽保存文件的位置。 – NayeemKhan 2010-11-15 08:47:48

+2

@NayeemKhan:不要混。首先使用OpenFileDialog的目的是什麼?也許你應該問如何在asp.net中實現OpenFileDialog類實現的功能。 – deostroll 2010-11-15 09:05:55

1

你的例外是不言自明,只是標誌着與STAThread Main方法屬性

編輯:

考慮到這是一個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

這是一個ASP.NET應用程序。在winforms中沒有main()。 – 2010-11-15 07:44:17

+1

在ASP.NET應用程序中,沒有使用OpenFileDialog,所以它理解它是一個winform應用程序。 – ace 2010-11-15 07:46:12

+0

親愛的所有人,這是一個asp.net應用程序,我正在使用System.Windows.Forms,以便我可以使用OpenFileDialog類。 – NayeemKhan 2010-11-15 08:44:00

0

它不能用於ASP.NET。僅適用於Winforms。
只有Winforms可以使用單線程單元模型。