window service 学习之路(四)【学习笔记】-- 调用外部EXE程序

前提:我做了另一个控制台的项目,它的作用是从别人的接口读数据存入自己的DB.在外部调试成功生成了EXE.

下面正式开始,像前面几篇一样做同样的步骤,新建一个window service项目,把service1.cs 改为“DBService1.cs”,放一个日志控件“eventLog1”。

在“DBService1.cs“中直接写代码:

        //构造函数中更改代码

        public DBService1()
        {
            InitializeComponent();

            //添加代码如下
            if (!System.Diagnostics.EventLog.SourceExists("MyWinDBSource"))
            {
                System.Diagnostics.EventLog.CreateEventSource(
                    "MyWinDBSource", "MyNewWinDBLog");
            }
            eventLog1.Source = "MyWinDBSource";
            eventLog1.Log = "MyNewWinDBLog";
        }

        //重写OnStart

        Process proc = new Process();
        protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("In OnStart");

            proc.StartInfo.FileName = "FlightInfo.exe";//注意如果不是调用系统程序,则需要输入全路径      E:\\Test\\WinDBService1\\WinDBService1\\bin\\Debug\\     
            proc.StartInfo.CreateNoWindow = false;
            proc.StartInfo.UseShellExecute = false;
            proc.Start();
           
            //proc.WaitForExit();//关键,等待外部程序退出后才能往下执行
        }

        //重写OnStop()

       protected override void OnStop()
        {
            eventLog1.WriteEntry("In onStop.");
           
            //proc.Close();
            //proc.Kill();
        }

        //重写OnContinue()
        protected override void OnContinue()
        {

            eventLog1.WriteEntry("In OnContinue.");
            //proc.Start();
            //proc.WaitForExit();//关键,等待外部程序退出后才能往下执行
        }

然后回到“DBService1.cs”的设计页右键如下图,(前几篇少放了个图,现在补上)

VS环境自动增加一个类,名字为“ProjectInstaller.cs”

对于该类的设置如(一)所示。

到此该服务已写完毕。另外写的过程中遇到了(三)的问题,对于本例的解决方案是把OnStart()中“proc.WaitForExit();”这句话注释掉,我想可能是服务一直处于启动状态正是因为进程一直在执行,等待退出,而本身数据量较大,进程一时半会又结束不掉,导致服务处于“启动”状态。注释掉后,服务正常启动,弄了好久才搞定的,所以写出来,备案一下。

“开始”-->"运行",录入“services.msc”,查看我们自己的服务“DBService1”,如下图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值