写了一个服务的测试。安装成功了,在系统服务中的状态是启动的。是不是我的执行方式有问题。timer是system下的不是form下的那个。    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
            timer1.Start();
            
            
        }        protected override void OnStop()
        {
            timer1.Stop();
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
        }        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            string sql = "INSERT INTO sys_temp values('"+DateTime.Now.ToString()+"')";
            ClassMyData.DbSystem db = new ClassMyData.DbSystem();
            db.ExecSql(sql);            
        }
    }

解决方案 »

  1.   

    断点调试查看值,看看SQL中的值类型
      

  2.   


    我就做过一个Service,之前也没详细看过具体该怎么做一个Service
    我就说两点,1是我觉得你的Service是不是需要一个MainLoop啊
    2是,我也用到了Timer,我是这样用的
                TimerWatcher = new System.Timers.Timer();
                TimerWatcher.AutoReset = false;
                TimerWatcher.Elapsed += new ElapsedEventHandler(TimerWatcher_Elapsed);
                TimerWatcher.Interval = ts.TotalMilliseconds; //ts is a TimeSpan
                TimerWatcher.Enabled = true;
      

  3.   

    你检查下你timer1的初始化,看看你设置的Interval多大。还有就是那段SQL语句如果放在按钮里点击执行可以成功吗?这类问题应该很好找,楼主先别急着做成服务,先分析各个部分运行是否正常。