2011-03-07 159 views
0

关于Windows窗体如何保持其执行状态的任何想法,除非我们明确地敲击关闭[X]标记。控制台应用程序不是这种情况吗?Windows窗体VS控制台应用程序

我想知道这是如何由.NET内部管理的?

在此先感谢

回答

0

为了获得这种差异,我相信你应该读些关于Windows MessagesMessages Queue,Message loop等)的内容。例如here。 .Net在这里并没有带来任何新东西,它更多的是关于Windows应用程序本身。

0

你弄错了:一个Windows窗体程序只有在执行过程中保持和不保持后。它仅在退出程序后停止执行,例如通过单击关闭[X]按钮。

你的意思是问控制台和Windows应用程序之间有什么不同,以及为什么从命令行启动时它们的执行方式有所不同?这由(PE)可执行头中的标志控制,该标头由连接器的/ subsystem:console或/ subsystem:windows选项设置。在我看来,这是完全疯狂的方法; Unix使用更合乎逻辑的方法(用户可以指定自己是否等待shell)。

这对于.NET和本机可执行文件都是一样的。

+0

请容忍我,如果我错了,但我看到的形式仍然存在。对于例如我创建一个Windows窗体应用程序,并拖放一个按钮到窗体上。在按钮的点击事件上,我写了一些东西。执行后,表单仍然存在。一旦主控功能完成,控制台也会结束。 – Nishant 2011-03-07 15:17:43

+0

是的,因为主要功能仍在运行。它与按钮后面的功能不同。主函数包含一个事件循环,用于处理来自表单按钮和关闭/最小化/等的消息。按钮,并且一旦它看到WM_QUIT消息就退出,例如当关闭按钮被点击时。按照Snowbear的答案中的链接。 – gpvos 2011-03-07 15:31:35

0

那么WinForms的代码不仅仅是你输入的内容。它们不会关闭写入,因为代码处于一个不断检查事件的循环中,并且如果触发事件Close,它们将关闭。

试想一下,你在你的控制台应用程序代码是这样的:

while(true) 
{ 
    Console.WriteLine("Enter a Number: "); 
    int x; 
    Console.Read(X); 

    if(x==-1) break; 
    Console.Write(x*x); 

} 

的循环将永远重复,直到输入-1,你可以说,类似的东西去与WinForms的。当然,这是一种过度简单化,但想象一下这样的事情。

如果您想了解更多,你应该考证一下Windows Messages (Messages Queue, Message loop作为Snowbeard说

相关问题