Windows系统下常见的程序类型有3种,第一种是最常见的WinForm类型的,第二种是控制台Console类型的,第三种是Windows Service类型的。
在我们编写一个程序的时候,如果把其设置成Console类型,那么操作系统在启动这个程序的时候,会认为你是需要实时的输出一些信息,会自动的打开一个控制台窗口,而且那个控制台窗口会一直在那里,直到程序关闭。
而如果在编写程序的是设置成WinForm类型,操作系统在启动这个程序的时候,会认为你不需要这个控制台窗口,那么就不会启动额外的这个控制台窗口。
有人会说,WinForm类型的程序,会一直有一个WindowsForm窗体出现。其实,这是不准确的。因为如果我们注释掉相关的显示form的代码,那么这个程序就不会有任何的窗口出现。打开Program.cs文件,在Main方法里边有这样几句代码。
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(newMain());
最后的那句Application.Run是一直显示窗口的原因,是这句代码让这个进程一直存在,不会结束。如果我们把这些代码注释掉,那么程序就运行一遍就结束了。
如果我们想设置一个后台的进程来执行一些schedule的任务,我们要怎么做?当然我们可以选择windows service,这是最正统的方法。但是如果觉得windowsserivice安装不方便的话,我们可以设计一个没有任何界面的winform程序。我们只需要注释掉窗口显示的那些代码,并且定制一些time interval的代码就可以了。比如像下边这样。
while(true)
{
//…do something
Thread.Sleep(1000*60*60);
//每隔1小时会执行一次
}
而且我们可以把这个程序设置为开机启动,一般来讲,如果在其他的电脑上设置开机启动,需要修改注册表,那么这个动作就会被相应的杀毒软件360等拦截。为了避免这个,我们可以把这个程序的快捷方式放到开始菜单的StartUp目录中。具体分析参照http://blog.csdn.net/sundacheng1989/article/details/31800753