假如在 Windows 服务器上调用某些服务,可能因为多种原因导致程序卡在那里。这在 Office PIA 开发中最常遇到,一般调用 WORD 来处理某些任务,会遇到 WORD 的僵死。我们想停掉处理超时的程序,用 .NET 写一个 console 小程序仅仅数行就能达到这个目的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;

namespace WORD_Monitor
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("Monitor service start");
            // check every 2 seconds
            Timer timer = new Timer(new TimerCallback(TimCallBack), null, 1000, 2000);
            Console.Read();
            timer.Dispose();
        }

        public static void TimCallBack(object o)
        {
            Process[] proc = null;
            proc = Process.GetProcesses();
            foreach (Process pr in proc)
            {
               // only check WINWORD process
               if (!(pr.ProcessName.IndexOf("WINWORD") < 0))
               {
                  DateTime now = DateTime.Now;
                  TimeSpan dtDiff = now - pr.StartTime;
                  // kill the process over 30 seconds
                  if (dtDiff.TotalSeconds > 30)
                  {
                      pr.Kill();
                  }
              }
             }
        }
    }
}

推荐这些相关文章

  • 看了之后有帮助吗?

订阅这个博客:

关注我的微博:

关注我的推特: