zoukankan      html  css  js  c++  java
  • windows Service循环任务.服务启动后无法停止重启的解决办法

    protected override void OnStart(string[] args)
    {

    while(true)
    {
    try
    {
    workflow.ProcessWorkFlowMQ();
    Thread.Sleep(150);
    }
    catch (Exception e1) 
    {
    Logger.Error(e1.Message);
    }
    }
    }

    如上代码会造成 服务器安装成功后无法通过windows服务管理进行启动停止.比如说需要更换运行的服务器帐号就无法操作.

    分析原因是因为OnStart方法无法执行结束.造成的.所以需要使用多线程来处理

    OnStart方法内使用多线程 OnStop方法内部停止循环线程.测试通过服务可以正常启动停止.

    代码如下

    protected override void OnStart(string[] args)
    {

    Logger.Error("工作流监控信息启动!" + Environment.NewLine);
    thread = new Thread(new ThreadStart(StartProcess));//启用另外一个线程来处理业务.否则 OnStart方法执行不完.服务无法进行停止启动操作.
    thread.Start();

    }

    protected void StartProcess() 
    {
    int i = 0;
    while (true)
    {

    try

    workflow.ProcessWorkFlowMQ();
    Thread.Sleep(150);
    i = 0;
    }
    catch (Exception e1)
    {
    //Logger.Error(e1.Message);
    // i++;
    // Thread.Sleep(500 * i);
    // if (i == 200) 
    // {
    // thread.Abort();
    // }
    }
    }
    }

    protected override void OnStop()
    {
    thread.Abort();
    }

    但是这样是修改程序的办法,无法解决正在运行中的程序,我试过用软件卸载也无法,只能通过命令方式

    要停止这个服务,首先记住这个服务的名称,在这里是 ‘PlatformMessageService’.

    然后打开命令行窗口,运行 sc queryex 命令来获取服务的 PID,接着使用 taskkill 命令来停止它。

    C:\>sc queryex PlatformMessageService
    
    SERVICE_NAME: PlatformMessageService
    TYPE               : 10  WIN32_OWN_PROCESS
    STATE              : 2  START_PENDING
    (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
    
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x1
    WAIT_HINT          : 0xbb8
    PID                : 524
    FLAGS              :
    
    C:\>taskkill /PID 524 /F
    SUCCESS: The process with PID 3756 has been terminated.


    看完帖子觉得有帮助的朋友多支持下我的淘宝店铺:http://siwa8.taobao.com

  • 相关阅读:
    QT中使用CoInitializeEx
    Linux 声音采集的时候内容全都是0
    linux类似系统中编译依赖库出现error trying to exec cc1plus
    C语言练习题2
    进程和任务计划管理
    解决火车头7.6版本无法采集部分https网站处理方法
    PHP输出13位时间戳函数
    destoon取消公司名称怎重复注册的限制
    destoon取消公司名称怎重复注册的限制
    destoon伪静态地址空值优化
  • 原文地址:https://www.cnblogs.com/goody9807/p/3120698.html
Copyright © 2011-2022 走看看