您的位置:首页 > 编程语言 > C#

C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)(从iteye搬到博客园)

2013-01-25 14:43 1441 查看
1. 建立空白项目



2.添加创建windows服务需要的引用,选择System.ServiceProcess。

  




3.创建服务类,继承ServiceBase,类的源代码在后面。



4. 添加windows服务的安装类。

(1)在类名或者解决方案中新建视图:



(2)上一步后会出来类的视图,右键选择查看设计器:



(3)在设计视图里面添加安装器(有可能会弹出警告框,如图,不用管):





5 服务类源代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;

namespace SR171
{
class Service17: System.ServiceProcess.ServiceBase
{

public Service17()//可以自己设定
{
this.ServiceName = "MyServiceForShowTime";
this.CanStop = true;
this.CanPauseAndContinue = true;
this.AutoLog = true;

#region 定时器事件
Timer aTimer = new Timer();       //System.Timers,不是form的
aTimer.Elapsed += new ElapsedEventHandler(TimedEvent);
aTimer.Interval = 2 * 1000;    //配置文件中配置的秒数
aTimer.Enabled = true;
#endregion
}
public static void Main()//必须写
{
System.ServiceProcess.ServiceBase.Run(new Service17());
}
protected override void OnStart(string[] args)//自己根据要求覆写
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine("mcWindowsService: Service Started" + DateTime.Now.ToString() + "\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

}
protected override void OnStop()
{

FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine(" mcWindowsService: Service Stopped " + DateTime.Now.ToString() + "\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

}

private static void TimedEvent(object source, ElapsedEventArgs e)         //运行期间执行
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine("  Running.11.. " + DateTime.Now.ToString() + "\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: