Windows窗体与控制台应用程序

时间:2011-03-07 14:47:36

标签: .net winforms console-application

关于Windows Form在执行后如何保留的任何想法,除非我们明确地触及关闭[X]标记。控制台应用程序不是这种情况吗?

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

提前致谢

3 个答案:

答案 0 :(得分:0)

您错了:Windows窗体程序仅在执行期间保留,并且不会在其执行后保留。它只在您退出程序后停止执行,例如单击关闭[X]按钮。

您是想要问一下控制台和Windows应用程序之间的区别,以及从命令行启动时它们执行方式有何不同?这由(PE)可执行标头中的标志控制,该标头由链接器的/ subsystem:console或/ subsystem:windows选项设置。在我看来,这是一种完全疯狂的方法; Unix为此使用了更为合理的方法(用户可以自己指定shell是否等待它。)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

WinForms的代码多于您键入的代码。它们不会关闭写入,因为代码处于循环中,它不断地检查事件,如果事件关闭被触发,那么它们将关闭。

想象一下,您在控制台应用程序中编写了类似的代码:

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

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

} 

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

如果你想了解更多信息,你应该像Snowbeard所说的那样研究Windows Messages (Messages Queue, Message loop