【问题标题】:Application.run(Windows) vs Application.run()Application.run(Windows) 与 Application.run()
【发布时间】:2014-08-31 03:36:15
【问题描述】:

这三个代码有什么区别?

1.

Window a = new Window ();
a.Show (); // call show

Application b = new Application ();
b.Run (); // call without a

2.

Window a = new Window ();
            // do not call show

Application b = new Application ();
b.Run (a);   // with a

为什么两者都能正常工作?为什么也要这样做? 3.

Window a = new Window ();
a.Show ();  // call show and also call show bellow

Application b = new Application ();
b.Run (a);  // with a

【问题讨论】:

    标签: c# wpf windows


    【解决方案1】:

    两者基本上都是用于消息循环的,它是windows应用程序的核心,处理窗口消息,如绘画、鼠标/kbd事件等。

    如果你使用下面的代码没有Application.Run

    Window a = new Window ();
    a.Show ();
    

    你会发现一个冻结的窗口,原因是没有人告诉那个窗口重新绘制或处理任何事件。

    所以通过Application.Run 调用消息循环,窗口开始按预期工作

    Application b = new Application ();
    b.Run (a);  // with a
    

    【讨论】:

    • +1 解释得很好。另外我要补充一点,消息循环是阻止程序入口点(主函数)在用户指示退出之前退出的原因,因此需要让它无限期地运行。
    • “你会发现一个冻结的窗口”,我认为没有 Application.Run 的应用程序会立即退出。
    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多