2011-05-12 09:08 Windows服务中Timer组件Tick无法触发解决方法
2012-09-18 18:43
561 查看
Windows服务中Timer组件Tick无法触发解决方法
具体原因,微软自称是Framework的bug,具体原因在service 中,应该不能运行Windows.Forms,但是无论是windows窗体中timer还是组件中的timer都是继承自System.Windows.Form.Timer,并不是我们需要的System.Timers ,继承自System.Timers 的timer只有手动创建
public Service1() { InitializeComponent();
System.Timers.Timer t = new System.Timers.Timer(200);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; }
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
SqlConnection conn = new SqlConnection("Server=.;UID=eaglesoft;PWD=password;DataBase=exchange");
SqlCommand comm = new SqlCommand("INSERT INTO op_album(album_name,album_score,album_picscr) VALUES ('1','2','3')", conn); conn.Open(); comm.ExecuteNonQuery(); conn.Close();
}
这样就可以触发Elapsed事件了,注册服务一切正常,能触发该事件。
总结: 在Visual Studio 中提供了三种类型的Timer: System.Windows.Forms.Timer 基于windows 的计时器,运行于Windows 窗体程序中。 System.Timers.Timer 基于服务的计时器,运行于服务器环境中。 System.Threading.Timer 基于线程的计时器,使用回调方法而不是使用事件,并由线程池线程提供支持。 在Visual Studio 2003的工具箱里面默认提供了System.Windows.Forms.Timer和System.Timers.Timer两种,而Visual
Studio 2005 或者2008中却只默认提供了System.Windows.Forms.Timer这一种,所以在vs 2005或者VS2008的windows service 中使用计时器时,必须手工修计时器定义,计时器才能正常运行。
具体原因,微软自称是Framework的bug,具体原因在service 中,应该不能运行Windows.Forms,但是无论是windows窗体中timer还是组件中的timer都是继承自System.Windows.Form.Timer,并不是我们需要的System.Timers ,继承自System.Timers 的timer只有手动创建
public Service1() { InitializeComponent();
System.Timers.Timer t = new System.Timers.Timer(200);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; }
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
SqlConnection conn = new SqlConnection("Server=.;UID=eaglesoft;PWD=password;DataBase=exchange");
SqlCommand comm = new SqlCommand("INSERT INTO op_album(album_name,album_score,album_picscr) VALUES ('1','2','3')", conn); conn.Open(); comm.ExecuteNonQuery(); conn.Close();
}
这样就可以触发Elapsed事件了,注册服务一切正常,能触发该事件。
总结: 在Visual Studio 中提供了三种类型的Timer: System.Windows.Forms.Timer 基于windows 的计时器,运行于Windows 窗体程序中。 System.Timers.Timer 基于服务的计时器,运行于服务器环境中。 System.Threading.Timer 基于线程的计时器,使用回调方法而不是使用事件,并由线程池线程提供支持。 在Visual Studio 2003的工具箱里面默认提供了System.Windows.Forms.Timer和System.Timers.Timer两种,而Visual
Studio 2005 或者2008中却只默认提供了System.Windows.Forms.Timer这一种,所以在vs 2005或者VS2008的windows service 中使用计时器时,必须手工修计时器定义,计时器才能正常运行。
相关文章推荐
- Windows服务中Timer组件Tick无法触发解决方法
- Windows服务中Timer组件Tick无法触发解决方法
- 安装软件时提示错误1719 无法访问windows install服务的解决方法
- Windows服务中timer组件无法引发相应的tick事件
- Windows 共享无线上网 无法启动ICS服务 解决方法
- Windows 服务中使用 Timer 控件时,Tick 事件不命中问题的解决
- 《windows无法启动MySQL服务 错误1067:进程意外终止》的解决方法及反思
- windows操作系统启动后SDE的服务无法自动启动的解决方法
- Windows 服务中使用 Timer 控件时,Tick 事件不命中问题的解决
- 无法访问windows安装服务 解决方法
- Windows服务中Timer组件Tick无法触发
- Windows系统中无法启动Lync Server音频测试服务的解决方法图解
- 无法访问windows安装服务 解决方法
- windows无法启动MySQL服务报错1067的解决方法
- Windows7下mysql安装后服务无法启动和启动后无法登录的问题解决的方法
- win7下 Windows Process Activation Service 服务导致的 iis无法启动的解决方法
- 提示“无法启动 Windows 安全中心服务”的解决方法
- Windows下启动Oracle时的OracleDBConsoleorcl服务无法启动解决方法
- Windows常见组件“我的电脑”、“注册表”等无法打开的解决方法
- 无法登录到Windows Live Messenger的服务,错误为80048820 解决方法