Program.cs里面不动
ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 

                
new Import() 
};
            ServiceBase.Run(ServicesToRun);Service1里的构造函数加了些代码,OnStart和OnStop没加代码,正常启动服务后,就是没有作用
不知道哪一步漏了

解决方案 »

  1.   

    不要在构造函数里加代码...在OnStart里启动任务,并且不能加长时间运行的代码...长时运行的任务要开新线程...Windows的运行机制和桌面程序不同,不要想当然...
      

  2.   

    http://blog.csdn.net/flyerwing/archive/2009/10/16/4678954.aspx
    看看,说不定有用
      

  3.   

    仍然是这样,没起作用
    protected override void OnStart(string[] args)
            {
                timer20.Start();//是System.Timers.Timer
            }        protected override void OnStop()
            {
                timer20.Stop();
            }
            private void timer20_Elapsed(object sender, ElapsedEventArgs e)
            {
                execute1();
            }
            private void execute1()
            {
                //数据库的操作
            }
      

  4.   

    我的思路是,后台定义5个计时器Timer_Elapsed1到Timer_Elapsed5,然后通过一个方法Method(),将这个5个计时器循环一遍,Method()里的while循环设计的不是很好,求教呀protected override void OnStart(string[] args)
    {
        Method();
    }
    private void Method()
    {
        int[] timerstime = { 0, 0, 0, 0, 0 };//备份频率,单位毫秒,存的都比较小的,1分钟2分钟
        DataSet ds=ExecuteDataset(sql);//从频率表取出
        int i=0;
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            timerstime[i] = int.parse(dr["timers"].ToString());//存到数组里
            ++i;
        }
        while (i > 0)
        {
            TimerEvent(timerstime[i - 1], i - 1);//执行timer
            i--;
        }
    }
    private void TimerEvent(int timerstime, int j)
    {
        if(j=0)
        {
            timer1 = new System.Timers.Timer();
            timer1.AutoReset = true;
            timer1.Interval = timerstime;//最大值为int32.MaxValue
            timer1.Elapsed += new ElapsedEventHandler(Timer_Elapsed1);
            timer1.Enabled = true;
         }
         if(j=1)
         {
            timer2 = new System.Timers.Timer();
            timer2.AutoReset = true;
            timer2.Interval = timerstime;//最大值为int32.MaxValue
            timer2.Elapsed += new ElapsedEventHandler(Timer_Elapsed2);
            timer2.Enabled = true;
         }
         ....//还有3个
    }
    private void Timer_Elapsed1(object sender, System.Timers.ElapsedEventArgs e)
    {
        execute1();//执行数据库操作
    }
    private void Timer_Elapsed2(object sender, System.Timers.ElapsedEventArgs e)
    {
        execute2();//执行数据库操作
    }