void Watch()
        {
            try
            {
                LogHelper.WriteLog("WatchService Watch Start!");
                while (true)
                {
                    try
                    {
                        if (ReadConfig() != "true")
                        {
                            HideTaskBarAndStartButton(0);
                        }
                        else
                        {
                            HideTaskBarAndStartButton(1);
                        }
                    }
                    catch (Exception)
                    {

//这个try catch 用得非常好 ,不能因小(显示/隐藏任务栏)失大(while死循环崩溃)
                    }

Process[] process = Process.GetProcessesByName("Zxt.TaxSelfHelp.Client");
                    //LogHelper.WriteLog("WatchService Watch Client process.Length:" + process.Length);
                    if (process.Length == 0)
                    {
                        process = Process.GetProcessesByName("Zxt.TaxSelfHelp.Update");
                        //LogHelper.WriteLog("WatchService Watch Update process.Length:" + process.Length);
                        if (process.Length == 0)
                        {
                            LogHelper.WriteLog("Process.Start " + Application.StartupPath + "\\Zxt.TaxSelfHelp.Client.exe");
                            //ProcessStartInfo processStartInfo = new ProcessStartInfo();
                            //processStartInfo.Verb = "runas";
                            //processStartInfo.FileName = Application.StartupPath + "\\Zxt.TaxSelfHelp.Client.exe";
                            //Process.Start(processStartInfo);

Process proc = new Process();
                            proc.StartInfo.FileName = "Zxt.TaxSelfHelp.Client.exe";
                            proc.StartInfo.WorkingDirectory = Application.StartupPath;
                            proc.Start();
                        }
                    }
                    Thread.Sleep(Second * 1000);
                }

}
            catch (Exception ex)
            {
                LogHelper.ErrorLog("WatchService", ex);
            }
        }

守护进程函数——内部的小范围try catch 增强了 while死循环执行的 可靠性的更多相关文章

  1. UNIX环境高级编程——单实例的守护进程

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h&g ...

  2. UNIX环境高级编程——初始化一个守护进程

    #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...

  3. Supervisor 管理后台守护进程

    Supervisor 管理后台守护进程 参考原文如下: http://codinn.com/people/brant/notes/110948/ 做了一些注释 +++++++++++引用开始+++++ ...

  4. linux分享一:进程全攻略--守护进程(服务)

    概括: 进程是程序的运行实例.进程对应一个唯一的进程PID, 统一程序的多个实例可以同时运行,他们的pid互不相同. 进程一般分为交互进程.批处理进程和守护进程(daemons)三类 一:什么是守护进 ...

  5. 子进程回收资源两种方式,僵尸进程与孤儿进程,守护进程,进程间数据隔离,进程互斥锁,队列,IPC机制,线程,守护线程,线程池,回调函数add_done_callback,TCP服务端实现并发

    子进程回收资源两种方式 - 1) join让主进程等待子进程结束,并回收子进程资源,主进程再结束并回收资源. - 2) 主进程 “正常结束” ,子进程与主进程一并被回收资源. from multipr ...

  6. UNP总结 Chapter 12~14 IPv4与IPv6的互操作性、守护进程和inet超级服务器、高级I/O函数

    一.IPv4与IPv6的互操作性 1.IPv4客户与IPv6服务器 拥有双重协议栈的主机的一个基本特性就是:其上运行的IPv6服务器既能应付IPv4客户,又能应付IPv6客户.这是通过使用IPv4映射 ...

  7. PHP有关守护进程,以及流程控制和信号处理函数

    守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.PHP也可以实现守护进程的功能. 1.基本概念 进程 ...

  8. daemon函数实现原理 守护进程

    linux提供了daemon函数用于创建守护进程,实现原理如下: #include <unistd.h> int daemon(int nochdir, int noclose); 1.  ...

  9. 守护进程的创建(syslog函数)

    守护进程(daemon)是指在后台运行的,没有控制终端与之相连的进程.它独立于控制终端,通常周期性的执行某种任务. 守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进程的方式实现的,如I ...

随机推荐

  1. 一元二次方程解法的实现(Python)

    请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程: ax2 + bx + c = 0的两个解. 提示:计算平方根可以调用math.sqrt()函数   # -*- c ...

  2. volatile的陷阱

         对于volatile关键字,大部分C语言的教程都是一笔带过,并没有做太深入的分析,所以这里简单的整理了一些 关于volatile的使用注意事项.实际上从语法上来看volatile和const ...

  3. 转载:索引与分片 plus

    [Python笔记]序列(一)索引.分片   Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象.这些序列支持通用的操作: 索引 索引是从0开始 ...

  4. 我的QML

    1.键盘加Text import QtQuick 2.7 import QtGraphicalEffects 1.0 Rectangle{ width:; height:; color:"# ...

  5. Nikto

    https://cirt.net/nikto2 Fire Up Kali & Open Nikto Let's fire up Kali and get started with nikto. ...

  6. XXXcannot be resolved to a type

    编写自动化测试用例一个新创建的用例中类继承了其他类,由于未知原因,eclipse没能自动编译源代码到build/classes(或其他classes目录)代码一直报错XXX cannot be res ...

  7. LabVIEW编程实例:如何通过TCP协议进行数据通信

    对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议.UDP协议.DataSocket技术.甚至远程面板通信技术等方式进行通信. 下面通过一个简单的例子,演示在LabV ...

  8. Win10 使用命令修复系统坏死点

    我的电脑win10系统升级多次以后,经常会出现所有设置有时点不开的情况 解决: C:\WINDOWS\system32>sfc /SCANNOW 开始系统扫描.此过程将需要一些时间. 开始系统扫 ...

  9. IDEA新建一个Project和Module的问题

  10. Docker1之Container

    Document An image is a lightweight, stand-alone, executable package that includes everything needed ...