Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/27 6:50:17 VS2005开发中Timer控件失效的解决方法_[Asp.Net教程]
本文介绍了使用VS2005进行开发时Timer控件失效的解决方法,大家在实际开发过程中可以参考一下……
Timer控件失效的解决
在Windows 服务不引发计时器事件
原因:
我认为windows服务里不能使用System.Windows.Forms的Timer控件,Windows.Forms 计时器组件用于 Windows.Forms 环境。WindowsForms 计时器组件不用于服务器环境,所以要使用System.Timer下的控件。
解决方案
这个可以通过修改控件的类型,把所有使用服务器计时器从命名空间 System.Timers 代替 System.Windows.Forms 计时器。如:
Service1.Designer.cs 1namespace MyNewService 2{ 3 partial class MyNewService 4 { 5 /**//// 6 /// 必需的设计器变量。 7 /// 8 private System.ComponentModel.IContainer components = null; 9 10 /**//// 11 /// 清理所有正在使用的资源。 12 /// 13 /// 如果应释放托管资源,为 true;否则为 false。 14 protected override void Dispose(bool disposing) 15 { 16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19 } 20 base.Dispose(disposing); 21 } 22 23 组件设计器生成的代码#region 组件设计器生成的代码 24 25 /**//// 26 /// 设计器支持所需的方法 - 不要 27 /// 使用代码编辑器修改此方法的内容。 28 /// 29 private void InitializeComponent() 30 { 31 this.eventLog1 = new System.Diagnostics.EventLog(); 32 this.timer1 = new System.Timers.Timer(); 33 ((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit(); 34 ((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit(); 35 // 36 // timer1 37 // 38 this.timer1.Interval = 2000; 39 this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed); 40 // 41 // MyNewService 42 // 43 this.CanPauseAndContinue = true; 44 this.CanShutdown = true; 45 this.ServiceName = "MyNewService"; 46 ((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit(); 47 ((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit(); 48 49 } 50 51 #endregion 52 53 private System.Diagnostics.EventLog eventLog1; 54 private System.Timers.Timer timer1; 55 56 } 57}Service1.cs: 1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Diagnostics; 6using System.ServiceProcess; 7using System.Text; 8 9namespace MyNewService 10{ 11 public partial class MyNewService : ServiceBase 12 { 13 public MyNewService() 14 { 15 InitializeComponent(); 16 if (!System.Diagnostics.EventLog.SourceExists("MySource")) 17 { 18 System.Diagnostics.EventLog.CreateEventSource( 19 "MySource", "MyNewLog"); 20 } 21 eventLog1.Source = "MySource"; 22 eventLog1.Log = "MyNewLog"; 23 } 24 25 protected override void OnStart(string[] args) 26 { 27 eventLog1.WriteEntry("In OnStart"); 28 this.timer1.Enabled = true; 29 30 31 } 32 33 protected override void OnStop() 34 { 35 eventLog1.WriteEntry("In onStop."); 36 this.timer1.Enabled = false; 37 } 38 39 protected override void OnContinue() 40 { 41 eventLog1.WriteEntry("In OnContinue."); 42 } 43 44 45 46 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 47 { 48 eventLog1.WriteEntry("timer1_Tick." + DateTime.Now.ToString()); 49 } 50 51 52 } 53}
赞