[英]Weird behaviour of Window.ShowDialog
我在WPF應用程序中的行為很奇怪,希望有人能給我一個提示。 我有以下覆蓋應用程序的OnStartup:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
try
{
if (AppMutex.WaitOne(TimeSpan.Zero, true))
{
IoC.Instance.RegisterInstance(LogManager.GetLogger("MainLogger"));
Init();
var mainView = new MainView()
{
DataContext = IoC.Instance.MainViewModel
};
mainView.ShowDialog();
}
}
catch (Exception exception)
{
IoC.Instance.Log.Error(exception);
throw;
}
finally
{
AppMutex.ReleaseMutex();
}
}
這里MainView是System.Windows.Window的子類,沒有重寫的方法。 問題出在mainView.ShowDialog()上。 該行正在執行,沒有任何異常,但未顯示該窗口。 線程繼續前進,應用程序終止。 是否有人對此行為有任何想法? 提前致謝!
UPD:如果我在此調用之前放置MessageBox.ShowDialog(),則MessageBox.ShowDialog執行正確,但是mainView.ShowDialog引發異常:
窗口關閉后,無法設置可見性或調用Show,ShowDialog或WindowInteropHelper.EnsureHandle。
at System.Windows.Window.VerifyCanShow()
at System.Windows.Window.ShowDialog()
InnerException為null。
UPD:我得到了符號並檢查了VerifyCanShow:
private void VerifyCanShow()
{
if (this._disposed)
throw new InvalidOperationException(SR.Get("ReshowNotAllowed"));
}
看起來我的mainView正在以某種方式處置...
您需要將Application.ShutdownMode
設置為OnExplicitShutdown
。 http://msdn.microsoft.com/zh-CN/library/system.windows.application.shutdownmode(v=vs.110).aspx
您可以在對話框關閉后手動關閉應用程序。
mainView.ShowDialog();
Shutdown();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.