日期:2014-05-20  浏览次数:20758 次

Windows服务
我在Windows服务的项目里用到了一个Timer控件,发现在Windows服务(我这是VS2005)里,Timer控件的Tick事件没有作用。服务已经启动了但实际并未对数据库产生操作。请问这是为什么?Timer的Enalbed我已经设成了True.   Interval我设成了1000。Timer中取自组件栏里的。

代码是这样的:
  protected   override   void   OnStart(string[]   args)
                {
                        //   TODO:   在此处添加代码以启动服务。
                        this.timer1.Enabled   =   true;
                   
                }

                protected   override   void   OnStop()
                {
                        //   TODO:   在此处添加代码以执行停止服务所需的关闭操作。
                        this.timer1.Enabled   =   false;
                                    }

    private   void   timer1_Tick(object   sender,   EventArgs   e)
{
                     
  SqlConnection   conn   =   new   SqlConnection( "server=(local);database=sxl;uid=sa;pwd=; ");
  SqlCommand   comm   =   new   SqlCommand( "insert   into   sxlxxy(WEIJIBIANMA,NASHUIRENJC)   values( '111 ', '111 ') ",   conn);
  conn.Open();
comm.ExecuteNonQuery();
conn.Close();  
}



------解决方案--------------------
当然不能用timer控件了,timer控件是依赖于消息机制,依赖窗口的,Windows服务没有窗口当然响应不了了
用System.Timers.Timer或者线程的计时器System.Threading.Timer
建议用System.Threading.Timer
------解决方案--------------------
可以考虑用在一个独立的线程使用while循环