我在我的WPF應用程序中使用了第三方WinForms登錄對話框,出於某種原因,這使得我的WPF應用程序在調試時無法正確關閉。爲什麼我的WPF應用程序在顯示一個WinForms對話框後不能正常關閉?
如果我在登錄前退出winforms登錄對話框,應用程序會正常關閉,但是如果我成功登錄並啓動WPF窗口,退出窗口不會關閉應用程序。
我把一個斷點放在OnExit
方法App
,它永遠不會被調用。我覆蓋了我的主窗口的OnClosing
方法,但確實被調用,但即使調用Application.Current.ShutDown()
也沒有正確退出應用程序。我也嘗試將我的應用程序的ShutdownMode
設置爲OnExplicitShutdown
和OnMainWindowClose
,並且都沒有關閉它。
我唯一的提示是出現在調試窗口中,但我不知道它試圖告訴我什麼。
The thread 'vshost.RunParkingWindow' (0xf74) has exited with code 0 (0x0).
The thread <No Name> (0x1b58) has exited with code 0 (0x0).
此行爲僅在Visual Studio中以調試模式運行時纔會發生。在沒有調試的情況下運行應用程序會正確關閉應用
任何人都可以指出我在正確的方向,以什麼可能會導致此行爲?
編輯
的WinForms的登錄對話框不是傳統的登錄對話框與Show()
或Close()
方法,那就是隻有一個Login()
和Logout()
方法的靜態類。
它使用someething這樣的:
if (CompanyNamespace.ApplicationName.Login())
{
var shell = new ShellView();
var context = new ShellViewModel();
shell.DataContext = context;
shell.Show();
// When the Shell Window gets closed, the debugger doesn't stop
}
else
{
Application.Current.Shutdown(); // Works fine
}
你可以告訴你顯示登錄對話框和登錄方式後的方式你打開主窗口? –
@Davide我添加了一些示例代碼 – Rachel
@Rachel:btw,你檢查是否設置了Application.Current.MainWindow?它可能是空的,因爲第一個打開的窗口是WinForms對話框 – sll