我有一個偶爾掛起的c#winforms應用程序,我被告知我們應該確保我們不打開主GUI線程的任何窗口。我啓動了Spy ++並注意到當我們在客戶端會話開始時打開OpenFileDialog時,即使代碼路徑在主GUI線程上運行,該對話框也存在於另一個線程中。爲什麼C#OpenFileDialogs在主GUI線程之外創建?
然後,窗口關閉後,窗口仍然顯示在Spy ++中在工作線程上。即使我們在Open語句中使用OpenFileDialog,也會發生這種情況。因此,處理對話似乎並沒有真正擺脫窗口,這很奇怪。
下面是實際的代碼
if (filename == String.Empty)
{
using (var openFileDialog = new OpenFileDialog
{
Filter = string.Format(MessageStrings["DialogFormat"]),
Title = MessageStrings["OpenDialogTitle"]
})
{
if (openFileDialog.ShowDialog() != DialogResult.OK || openFileDialog.FileName == String.Empty)
return false;
filename = openFileDialog.FileName;
}
}
請發表實際的代碼。這似乎不大可能。 – BartoszKP
您的用戶界面線程是否標記了STAThread屬性? – Reda
我懷疑這個對話框會成爲你的問題。它應該是所有的本地代碼。 – David