简单实现 - 文章图片 / 输入项目名称,选择框架直接生成项目简单实现 - 文章图片 / 点击添加简单实现 - 文章图片 / 选择属性后更换简单实现 - 文章图片 / 将USER 改为 LOCALSYST...
简单实现' />
简单实现 - 文章图片" />
输入项目名称,选择框架直接生成项目
简单实现 - 文章图片" />
点击添加
简单实现 - 文章图片" />
选择属性后更换
简单实现 - 文章图片" />
将USER 改为 LOCALSYSTEM
简单实现 - 文章图片" />
可以自己更改serviceInstaller1 和servicename
SeriviceName:就是你等下装到系统里面的服务名称
在更改的页面右击查看代码或者F7
简单实现 - 文章图片" />
继承serviceBase,重写onstart(),onstop()方法
这两个方法记录服务启动和停止,在这两个方法里面增加写日志的方法,当服务启动停止可以直接查看日志
简单实现 - 文章图片" />
两种写入的方法,都很扣脚
简单实现 - 文章图片" />
简单实现 - 文章图片" />
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.ServiceProcess;
using System.Timers;
namespace WindowsServiceCode
{
[RunInstaller(true)]
public partial class ProjectInstaller : ServiceBase
{
//记录到event log中,地址是 C:\Windows\System32\winevt\Logs (双击查看即可,文件名为MyNewLog)
private static EventLog eventLog1;
//记录执行的次数
private int eventId = 1;
public ProjectInstaller()
{
InitializeComponent();
eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
}
private void TimedEvent(object sender, ElapsedEventArgs e)
{
//定时器定时执行的方法
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "RunTime.+执行方法" + "\n");
}
eventLog1.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId++);
log("RunTime.+执行方法");
}
/// <summary>
/// 开始服务
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
FileStream fs = new FileStream(@"C:\log.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine(DateTime.Now.ToString() + "OnStartMethod1-1" + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "OnStartMethod1-2" + "\n");
}
#region 又来记录日志的方法
eventLog1.WriteEntry("OnStartMethod1-3");
log("OnStartMethod1-4");
#endregion 又来记录日志的方法
#region 定时器定义
Timer aTimer = new Timer();//System.Timers,不是form的
aTimer.Elapsed += new ElapsedEventHandler(TimedEvent);
aTimer.Interval = 2 * 1000; //配置文件中配置的秒数 2 seconds 执行一次
aTimer.Enabled = true;
aTimer.Start();
#endregion 定时器定义
}
/// <summary>
/// 停止服务
/// </summary>
protected override void OnStop()
{
FileStream fs = new FileStream(@"C:\log.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine(DateTime.Now.ToString() + "OnStopMethod2-1" + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "OnStopMethod2-2" + "\n");
}
eventLog1.WriteEntry("OnStopMethod2-3");
log("OnStopMethod2-4");
}
/// <summary>
/// 继续服务
/// </summary>
protected override void OnContinue()
{
eventLog1.WriteEntry("In OnContinue.-继续服务");
log("In OnContinue.-继续服务");
}
/// <summary>
/// 记录到指定路径:D:\log.txt
/// </summary>
/// <param name="message"></param>
private static void log(string message)
{
using (FileStream stream = new FileStream("D:\\log.txt", FileMode.Append))
using (StreamWriter writer = new StreamWriter(stream))
{
writer.WriteLine($"{DateTime.Now}:{message}");
}
}
}
}
View Code
复制C:\Windows\Microsoft.NET\Framework\v4.0.30319 下的InstallUtil.exe到生成的文件夹下
CMD先进入刚刚所在的文件夹
CMD管理员身份运行刚刚VS 生成的目录
简单实现 - 文章图片" />
剩下的今天来不及了,以后再记录吧
转载参考连接:http://www.vnfan.com/robin/d/9c9cdea813e068d9.html
本文标题为:C# 代码实现 Windows服务:计时器=>简单实现
基础教程推荐
- C#如何调用MFC 窗口 DLL 2023-05-31
- C#使用Task.ContinueWith组合任务 2023-06-04
- Unity 数据存储和读取的方法汇总 2023-07-05
- C# 索引器的使用教程 2023-04-15
- unity实现绘画功能 2023-04-14
- .Net Core 3.0 gRPC部署问题解决 2023-09-27
- vs2019 实现C#调用c++的dll两种方法 2023-03-13
- c#定期删除文件的实操方法 2023-01-16
- C#反射之使用绑定句柄减少进程的内存消耗 2023-11-13
- 在Winform框架界面中改变并存储界面皮肤样式的方法 2022-11-27
