簡體   English   中英

Window.ShowDialog的怪異行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM