gpt4 book ai didi

c# - 应用程序自动关闭

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:11 25 4
gpt4 key购买 nike

此代码不显示窗口,它只是自动关闭。为什么会这样?

class Program
{
[STAThread]
static void Main(string[] args)
{
var window = new MainWindow();
window.ShowDialog();
}
}

我知道您可以通过添加一个新的 Application.Run(window) 来修复它,但我想知道为什么它有这种行为以及为什么您必须通过窗口实例调用 Run 方法.

编辑:

扩展上一个问题,我注意到这段代码可以工作:

  1. 创建一个新的 WPF 应用程序。
  2. 转到 App.xaml 并删除 StartupUri
  3. 修改 App.xaml.cs 覆盖方法 OnStartup

    public partial class App : Application
    {
    protected override void OnStartup(StartupEventArgs e)
    {
    base.OnStartup(e);

    var window = new MainWindow();
    window.Show();
    }
    }

有了这个,窗口保持打开状态。引擎盖下发生了什么?

最佳答案

Microsoft Windows 程序是基于事件的。它们根据操作系统发布到应用程序主线程的消息进行操作。应用程序通过在一段称为“事件循环”的代码中重复调用 GetMessage(或 PeekMessage)函数,从消息队列接收这些消息。

调用 Run 时,应用程序将一个新的 Dispatcher 实例附加到 UI 线程。接下来,调用 Dispatcher 对象的 Run 方法,它启动一个消息循环来处理 Windows 消息。最后,Dispatcher 对象调用 Application 对象的 OnStartup 方法来引发 Startup 事件。

如果没有消息循环,应用程序将无法支持 UI。

关于c# - 应用程序自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com