怎样把写好的控制台程序成为windows服务

怎样把写好的控制台程序变成windows服务
怎样把写好的控制台程序变成windows服务,求大神指点,多谢!
------解决方案--------------------
windows服务主要是两个方法,一个是onstop一个是onstart
你需要做的是,在onstart中启动定时器或者线程,把控制台程序的主体放在现成或者定时器事件中。
另外就是不要有console.read这样的东西存在,因为服务是没有办法输入的。输出可以改写成输出到文件中。
onstop里面关闭定时器或者终止操作。
------解决方案--------------------
正好做过一个

主程序Program.cs
    ServiceBase[] ServicesToRun;
       ServicesToRun = new ServiceBase[] { new TransferService() };
       ServiceBase.Run(ServicesToRun);

服务TransferService.cs
TransferService.cspartial class TransferService : ServiceBase
        public TransferService()
        {
            InitializeComponent();
            _scannerTimer = new Timer(1000 * TimerIntervalSecond);//定时器,几秒钟执行一次
            _scannerTimer.Elapsed += (sender, e) => TransferData();//服务主体
        }

发布前追加一个安装文件就ok了

------解决方案--------------------
追加安装文件的方法是:
在TransferService.cs的设计页面,右键->添加安装程序

//注册服务命令
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
InstallUtil E:\transferSrc\transferSrc\bin\Debug\transferSrc.exe

//启动
net start ProcedureRun
//停止
net stop ProcedureRun

//反注册
InstallUtil /u E:\transferSrc\transferSrc\bin\Debug\transferSrc.exe

------解决方案--------------------
有安装文件就不需要再添加了。
选中serviceInstaller,VS右侧属性窗口有一个ServiceName属性,是用来设置服务的名字的。
选中serviceprocessInstaller,VS右侧属性窗口有一个Account属性,选择LocalService。

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319    //根据你的.net版本也可能是2.0
InstallUtil E:\transferSrc\transferSrc\bin\Debug\transferSrc.exe  //InstallUtil就是个工具,会把你编译生成的exe加到系统服务里

当执行完上面的,正常的话服务的名字会出现在
控制面板--管理工具--服务--的列表里面,和一般的系统服务一样了。