2014-10-01 41 views
1

我有一個使用OpenFileDialogSaveFileDialog一個簡單的Windows窗體應用程序。窗體有一個關閉按鈕,單擊時調用下面的代碼:Windows窗體花了很長時間來關閉

private void closeButton_Click(object sender, EventArgs e) 
{ 
    this.Dispose(); 
} 

如果我打開窗體,然後從Visual Studio 2010中單擊關閉調試,窗體關閉,我回到了幾乎立即編輯模式。但是,如果我打開了OpenFileDialog或SaveFileDialog對象,並且選擇一個文件或點擊取消,然後點擊關閉,表格立即消失,但VS返回編輯模式最多需要10秒。

我對這些方法的代碼非常簡單:

private void saveDirectoryButton_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog sfd = new SaveFileDialog(); 

    try 
    { 
     String path = Path.GetDirectoryName(settings.SavePath); 
     if (!String.IsNullOrEmpty(saveTextBox.Text)) 
      path = Path.GetDirectoryName(saveTextBox.Text); 
     sfd.InitialDirectory = path; 
     String name = Path.GetFileName(settings.SavePath); 
     if (!String.IsNullOrEmpty(saveTextBox.Text)) 
      path = Path.GetFileName(saveTextBox.Text); 
     sfd.FileName = name; 
    } 
    catch { /* Don't do anything */ } 

    sfd.Filter = "Data File|*.dat|All Files|*.*"; 
    DialogResult result = sfd.ShowDialog(); 
    if (result == DialogResult.OK) 
     saveTextBox.Text = sfd.FileName; 
} 

打關閉後,輸出窗口顯示以下三行:

The thread 'vshost.RunParkingWindow' (0x1b8c) has exited with code 0 (0x0). 
The thread '<No Name>' (0x39c) has exited with code 0 (0x0). 
The program '[6052] LogScanner.vshost.exe: Managed (v2.0.50727)' has exited with code 0 (0x0). 

前兩個馬上顯示出來,而第三在Visual Studio返回編輯模式之前彈出一個對話框。

沒有人有一個想法,爲什麼它這麼長時間,如果我打開這些對話框的一個返回編輯模式?

+1

可能毫無關聯的:不要叫'this.Dispose()' - 嘗試'this.Close()'代替。 – Blorgbeard 2014-10-01 22:21:57

+1

另請嘗試在'using'語句中將'SaveFileDialog sfd = new SaveFileDialog();'換行。 – Blorgbeard 2014-10-01 22:23:45

+0

@Blorgbeard:我最初嘗試this.Close(),但結果相同。好的建議使用 - 我不確定爲什麼我沒有這樣做,因爲我通常會 - 但不幸的是,它並沒有解決問題。 – Tim 2014-10-01 22:44:52

回答

0

如果要關閉一個Windows窗體中,可以使用:

this.Close();

如果你想關閉整個程序,你可以使用:
Environment.Exit(0);

的0僅僅是退出代碼,這並不重要。
我希望它有幫助!

+0

OP在評論中說他嘗試了Close。 – Blorgbeard 2014-10-02 18:54:10

+0

好吧,但Environment.Exit(0);呢? – mrphil2105 2014-10-04 17:54:17