C# - Application.Run()

use*_*142 12 .net c#

我刚刚开始.Net开发(C#)并遇到了一些让我有点困惑的代码....

如果我有

Form myForm = new Form();
Run Code Online (Sandbox Code Playgroud)

以下行实际上做了什么:

Application.Run(myForm);
Run Code Online (Sandbox Code Playgroud)

它本质上与myForm.ShowDialog()或myForm.Show()做同样的事情(这就是我想的,当运行表单时会这样做).....

我总是发现msdn是一个很好的资源,无法向新来者正确解释材料

Ama*_*ure 15

Application.Run(myForm);使该表单对用户可见.它是第一种加载到内存中的形式.它在消息循环中运行此表单,以便您获得所有用户事件.

简答:

Application.Run开始在当前线程上运行标准应用程序消息循环.

答案很长:

Application.Run导致Windows应用程序进入Winmain中的消息循环,以处理操作系统发布到消息队列的各种Windows消息.消息循环,"循环",直到它收到WM_QUIT消息.它使用GetMessagePeekMessage检索消息并将PostMessage已检索的消息发送到Windows过程.

如果你这样做

Form myForm = new Form(); 
myForm.Show();
Run Code Online (Sandbox Code Playgroud)

它会显示表格并退出.当您想从现有表单启动新表单时,您将使用new Form()&.Show().

希望这能回答你的问题.

  • 这里重要的是消息循环.没有这个你基本上打开一个windo没有消息循环运行. (4认同)
  • 实际上,这是消息泵.如果你做了任何C++ Windows开发,你会发现它更容易理解 - C#的更高层次的抽象使得一些事情更难理解. (2认同)