【问题标题】:WPF application is not closing correctlyWPF 应用程序未正确关闭
【发布时间】:2009-05-01 07:39:10
【问题描述】:

我正在从一个使用ObjectDataProvider 绑定到 xaml 窗口的类中调用 Application.Current.Shutdown(),但应用程序没有关闭。谁能帮我理解为什么?我的主窗口关闭后我的应用程序没有完全关闭,它不会从任务管理器的进程列表中消失。

【问题讨论】:

    标签: wpf shutdown application-shutdown


    【解决方案1】:

    改用Environment.Exit(0)

    【讨论】:

    • override OnStartup() 内部调用Shutdown() 不起作用。 Environment.Exit(0) 工作
    【解决方案2】:

    您是否创建了任何线程来进行后台处理?如果有,请确保在它们上设置.IsBackground 属性,否则它们可以保持应用运行

    【讨论】:

    • 不,我不直接创建线程,可能是WPF在其他线程做绑定或者objectdataprovider资源?
    【解决方案3】:

    别忘了添加这个:

    private void Window_Closed(object sender, EventArgs e)
    {
      Application.Current.Shutdown();
    }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      如果您的应用程序中有多个窗口或对话框,您可能需要明确关闭每个窗口或对话框。

      关闭对话框:

      _myDialog.Close();

      关闭所有窗口:

      foreach(var window in Application.Current.Windows.ToList())
      {
          window.Close();
      }
      

      【讨论】:

      • 我试试这个,它没有帮助,我意识到问题出在哪里,问题是当我调用 shutdown() 或 close() 时 objectdataprovider 执行没有终止,我认为它会最好添加一个新问题,我现在要做什么:)
      • 您确定可以用 foreach 替换 for(i...) 吗?手动迭代循环是如此上个世纪:-)
      【解决方案5】:

      我遇到了一个问题,即即使关闭主窗口,应用程序也不会关闭。原来我在初始屏幕上做了 Hide() 而不是 Close() 所以它仍然潜伏在后台保持应用程序活着。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,虽然申请关闭了,但申请进程并没有停止。

        在我的例子中,我从 BackgroundWorker(下面的代码)打开了一个窗口

        BackgroundWorker BG = new BackgroundWorker();
        BG.DoWork += new DoWorkEventHandler(BG_DoWork);
        StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem 
        BG.RunWorkerAsync();
        

        在运行 BackgroundWorker 之前实例化窗口似乎不是问题,而是通过擦除应用程序正确关闭的行

        我从 BackgroundWorker 打开我的窗口,但使用主线程(下面的代码)

         View.Dispatcher.BeginInvoke(new Action(delegate()
         {
           StockMinWindow MinWindow = new StockMinWindow(StockMinList);
           MinWindow.Owner = View;
           MinWindow.ShowDialog();
         }));
        

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 2014-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多