系统里面有个页面需要调用服务执行自动插入日志文件!
第一次启动服务时可以执行插入,但是不能自动调用第二次调用服务,
这是服务代码
-----
 using System.Threading;
    public partial class SZFSNService : ServiceBase
    {
        EventLog loger;
        Thread t, exeT;
        private int times = Convert.ToInt32(ConfigurationSettings.AppSettings["IntervalTime"]);
        private string Pageurl = Convert.ToString(ConfigurationSettings.AppSettings["PageUrl"]);
        private int _scanNum = 0; // 扫描次数        private int num = 0;        public int Num
        {
            get
            {
                return ++num;
            }
        }
        public SZFSNService()
        {
            InitializeComponent();
            if (!EventLog.Exists("TLW-YDYSSN"))
            {
                //TODO:  创建日志
                EventLog.CreateEventSource("TLW-YDYSSN", "TLW-YDYSSN");
            }
            loger = new EventLog();
            loger.Log = "TLW-YDYSSN";
            loger.Source = "TLW-YDYSSN";
        }        protected override void OnStart(string[] args)
        {
            t = new Thread(new ThreadStart(OperateStart));
            t.Start();     
        }        protected override void OnStop()
        {
            while (t != null)
            {
                if (exeT.ThreadState != ThreadState.Running)
                {
                    if (exeT.ThreadState != ThreadState.Stopped && exeT.ThreadState != ThreadState.AbortRequested)
                    {
                        try
                        {
                            loger.WriteEntry(string.Format("正在强制中止执行线程[{0}.{1}]", exeT.ManagedThreadId, exeT.ThreadState.ToString()));
                            exeT.Abort();
                        }
                        catch (ThreadAbortException)
                        {
                            Thread.Sleep(times);
                        }
                    }
                }
                if (exeT.ThreadState == ThreadState.Stopped)
                {
                    exeT = null;
                    try
                    {
                        t.Abort();
                    }
                    catch { }
                    finally { t = null; }
                    GC.Collect();
                    loger.WriteEntry("获取SN服务已停止");
                    loger.Close();
                    loger.Dispose();
                    return;
                }
                Thread.Sleep(times);
            }  
        }           /// <summary>
        /// 操作开始
        /// </summary>
        private void  OperateStart()
        {
            // 如果上一次的计算尚未停止, 轮循线程, 继续睡觉.
            if ((exeT == null || exeT.ThreadState == ThreadState.Stopped))
            {
                // 在首次启动时, 清除日志, 防止服务意外中止后无法启动. 
                // 无法启动的根本原因在于服务没有正常停止, 日志数据不符合启动的条件. 陷入死循环. 
                if (_scanNum++ == 0)
                    loger.Clear();
                if (loger.Entries.Count == 0 || ((loger.Entries[loger.Entries.Count - 1].Message.StartsWith("Finish") && loger.Entries[loger.Entries.Count - 2].Message == "Start") || (loger.Entries[loger.Entries.Count - 1].Message == "Stop" || loger.Entries[loger.Entries.Count - 1].Message == "获取SN服务已停止")))
                {
                    if (loger.Entries.Count > 2000)
                        loger.Clear();
                    try
                    {
                        exeT = new Thread(new ThreadStart(Dopage));
                        exeT.Priority = ThreadPriority.AboveNormal;
                        exeT.Start();
                    }
                    catch (Exception ex)
                    {
                        loger.WriteEntry("ErrorGetSN:\t" + ex.StackTrace + ex.Message);
                    }
                }
            }
            if (exeT != null && (exeT.ThreadState == ThreadState.WaitSleepJoin || exeT.ThreadState == ThreadState.Aborted))
                exeT = null;
            // 守护线程休眠2秒, 等待执行线程运行, 避免出现抢占访问配置文件. 
            Thread.Sleep(times);
            Thread.Sleep(times);
          
        }        private void Dopage()
        {
            try
            {                
                    using (WebClient wc = new WebClient())
                    {
                        wc.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; )");
                        byte[] homePageBody = wc.DownloadData(Pageurl);
                    }
            }
            catch (ThreadAbortException)
            {
                GC.Collect();
                loger.WriteEntry("回收资源完成, 等待线程结束.");
                Thread.CurrentThread.Join(5000);
                loger.WriteEntry("清空运行线程完成");
            }
            catch (Exception ex)
            {
                loger.WriteEntry("程序异常:" + ex.Message);
                Thread.Sleep(100);
                loger.WriteEntry("程序异常:" + ex.StackTrace);
            }
            loger.WriteEntry("获取SN服务完成");
            loger.WriteEntry("Stop");
        }
    
    }
这是配置文件---
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>    
  </configSections>
  <appSettings>
    <!--间隔调用服务的时间-->
    <add key="IntervalTime" value="1000000" />
    <!--调用页面地址-->
    <add key="PageUrl" value="http://localhost/fjydys/YDYS/Controls/GetSzfSN.aspx" />
  </appSettings>
</configuration>
这个是调用服务的页面protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetInfo();
        }
    }
    /// <summary>
    /// 调用省政府下发审批办件信息的方法
    /// </summary>
    /// <returns></returns>
    public void GetInfo()
    { 
        ZFWebService.DubanhanService szfserive = new ZFWebService.DubanhanService();      
        string deptcode = ConfigurationSettings.AppSettings["DeptCode"];
        string password = ConfigurationSettings.AppSettings["PassWord"];
        string result = szfserive.getInfoBase(deptcode, password);
        string[] results = result.Split('|');
        if (result.StartsWith("RESULT"))
        {
            if (results[0].Equals("RESULT=成功"))
            {
                if (!results[1].Equals("MSG=0"))
                {
                    //将文件另存于xml文件中
                    WriteFile(results[1].Replace("MSG=", ""));
                    //读取xml文件的值入库
                    ReadXFSPBJXX(results[1].Replace("MSG=",""));
                }
                else
                {
                    ApplicationLog.WriteInfo("没有需要处理的报件");
                }
            }
            else
            {
                ApplicationLog.WriteError("从省级网上审批系统获取厅局需处理的审批件信息失败,失败原因:");
                ApplicationLog.WriteError(results[1]);
            }
        }
    }
    /// <summary>
    /// 将得到的字符串另存为xml文件,文件名称为当时的日期加时间
    /// </summary>
    /// <param name="xmlContent"></param>
    public void WriteFile(string xmlContent)
    {
        string time = DateTime.Now.ToShortDateString().Replace("-","");
        time +=""+DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second;
        string filepath = Server.MapPath("./xmltemp/") + "XFSPInfo"+time+".xml";
        XmlDocument xml = new XmlDocument();
        xml.LoadXml(xmlContent);
        xml.Save(filepath);
    }
    public void ReadXFSPBJXX(string xmlContent)
    {
        XmlDocument xmld = new XmlDocument();
        xmld.LoadXml(xmlContent);
        foreach (XmlNode node in xmld.ChildNodes)
        {
            string InfoType = "";
            string sn = "";
            string projname = "";
            foreach (XmlNode nodechild in node.ChildNodes)
            {
                string nodename = nodechild.Name.ToLower();
                if (nodename.Equals("infotype"))
                        InfoType = nodechild.InnerText;
                if (nodename.Equals("sn"))
                        sn = nodechild.InnerText;
                if (nodename.Equals("projectname"))
                        projname = nodechild.InnerText;                 
            }
            if(sn.Length!=0)
             InsertSN(projname, sn);
            //判断如果Infotype=1则表明还有报件需要处理,则继续调用服务
            if (InfoType.Equals("1"))
                GetInfo();
        }
    }
    /// <summary>
    /// 将获取到的项目名称和sn保存到数据库中
    /// </summary>
    /// <param name="ProjName">项目名称</param>
    /// <param name="SN">网上申报系统申报号</param>
    /// <returns>执行结果</returns>
    public void InsertSN(string ProjName, string SN)
    {
        string sql = "insert into BL_PROJ_SN values(?,?)";
        OleDbParameter[] param = new OleDbParameter[] {
                new OleDbParameter("PROJ_NAME", ProjName),
                new OleDbParameter("SN", SN)
           };
        try
        {
            DbFactory.Instance.GetDbHelp("Default").ExecuteNonQuery(sql, CommandType.Text, param);
            ApplicationLog.WriteTrace("报件名称:" + ProjName + "的SN号:" + SN + "入库成功");
        }
        catch (Exception e)
        {
            ApplicationLog.WriteTrace("报件名称:" + ProjName + "的SN号:" + SN + "入库失败,失败原因:" + e.Message);
        }
    }
    /// <summary>
    /// 清除BL_PROJ_SN表的数据
    /// </summary>
    /// <returns></returns>
    public void DeleteSN()
    {
        string sql = "delete BL_PROJ_SN";
        try
        {
            ApplicationLog.WriteTrace("开始清除BL_PROJ_SN的数据");
            DbFactory.Instance.GetDbHelp("Default").ExecuteNonQuery(sql);
        }
        catch (Exception e)
        {
            ApplicationLog.WriteTrace("BL_PROJ_SN表的数据清除失败,失败原因" + e.Message);
        }
    }