在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
同事离职后留一下程序,其中有一个Windows服务,让我产生来了想了解怎么写Windows服务的想法,百度后找到这篇文章,记录如下: 一、创建windows服务 public partial class Service1 : ServiceBase { System.Threading.Timer recordTimer; public Service1() { InitializeComponent(); } //开始 protected override void OnStart(string[] args) { IntialSaveRecord(); } //停止 protected override void OnStop() { DbTools.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>服务停止"); } //继续 protected override void OnContinue() { DbTools.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>服务继续"); base.OnContinue(); } //暂停 protected override void OnPause() { DbTools.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>服务暂停"); base.OnPause(); } private void IntialSaveRecord() { TimerCallback timerCallback = new TimerCallback(CallbackTask); AutoResetEvent autoEvent = new AutoResetEvent(false); recordTimer = new System.Threading.Timer(timerCallback, autoEvent, 10000, 60000 * 10); } private void CallbackTask(Object stateInfo) { FileOpetation.SaveRecord(string.Format(@"当前记录时间:{0},状况:程序运行正常!", DateTime.Now)); } }
只要在OnStart里完成你的功能代码即可。本例中我们做一个定时向本地文件写记录的功能。 创建一个类,用户写文件, public class FileOpetation { /// <summary> /// 保存至本地文件 /// </summary> /// <param name="ETMID"></param> /// <param name="content"></param> public static void SaveRecord(string content) { if (string.IsNullOrEmpty(content)) { return; } FileStream fileStream = null; StreamWriter streamWriter = null; try { string path = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, string.Format("{0:yyyyMMdd}", DateTime.Now)); using (fileStream = new FileStream(path, FileMode.Append, FileAccess.Write)) { using (streamWriter = new StreamWriter(fileStream)) { streamWriter.Write(content); if (streamWriter != null) { streamWriter.Close(); } } if (fileStream != null) { fileStream.Close(); } } } catch { } } } 那么在Service1中调用, public partial class Service1 : ServiceBase { System.Threading.Timer recordTimer; public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { IntialSaveRecord(); } protected override void OnStop() { if (recordTimer != null) { recordTimer.Dispose(); } } private void IntialSaveRecord() { TimerCallback timerCallback = new TimerCallback(CallbackTask); AutoResetEvent autoEvent = new AutoResetEvent(false); recordTimer = new System.Threading.Timer(timerCallback, autoEvent, 10000, 60000 * 10); } private void CallbackTask(Object stateInfo) { FileOpetation.SaveRecord(string.Format(@"当前记录时间:{0},状况:程序运行正常!", DateTime.Now)); } } 这样服务算是写的差不多了,下面添加一个安装类,用于安装。 运行完后,如图, 这样,一个windows服务安装成功了。
原文地址:http://www.cnblogs.com/keanuyaoo/p/3290074.html |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论