1.创建windows服务应用

2.右键查看代码

3.写个计时器Timer  using System.Timers;

如上图,按tab键快速操作  会自动创建一个委托

改为下边的方式,打印日志来记录服务运行

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers; namespace MyFirstWindowsService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
WriteRunLog("服务开始了!!!");
Timer timer = new Timer();
timer.Interval = ;
timer.Elapsed += Timer_Elapsed;
timer.Start();
} private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
WriteRunLog("当前时间:" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss"));
} protected override void OnStop()
{
WriteRunLog("服务结束了!!!");
} /// <summary>
/// 记录运行日志
/// </summary>
/// <param name="writeMsg"></param>
public void WriteRunLog(string writeMsg)
{
FIle_Common file = new FIle_Common();
file.CreateDire(@"F:\ServiceLog\"); using (FileStream fs = new FileStream(@"F:\ServiceLog\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.Write))
{
StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(, SeekOrigin.End); m_streamWriter.WriteLine("mcWindowsService:" + writeMsg + " Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n"); m_streamWriter.Flush(); m_streamWriter.Close(); fs.Close();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO; namespace MyFirstWindowsService
{
public class FIle_Common
{
/// <summary>
/// 创建文件夹
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void CreateDire(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
/// <summary>
/// 删除文件夹
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void DeleteDire(string path)
{
if (Directory.Exists(path))
{
Directory.Delete(path);
}
} /// <summary>
/// 删除文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void DeleteDireOne(string path)
{
if (File.Exists(path))
{
File.Delete(path);
}
}
}
}

4.右键添加安装程序

5.我用的VS2019  .net4.8  此时安装组件已经写好了,但是设计图里不显示,下边附上解决方案

6.解决方法:在这个类上边 using System.ServiceProcess;

此时 两个安装组件都显示出来了

7.设置服务安装属性

Description:对服务的说明

DisplayName:向用户标识服务的友好名称

ServiceName:表示在系统服务中的名称

StartType:启动服务的方式和时间,如果为Manual则手动启动,默认停止,如果为Automatic为自动启动

Accout:账户类型,LocalSystem本地系统服务

此时,Windows Service就编写完了

8.安装Windows Service

生成解决方案 进入\bin\Debug 下 添加两个批处理文件来安装 卸载服务

statr.bat    MyFirstWindowsService.exe是\Debug下生成的.exe文件   MyFirstWindowsService是上边设置的ServiceName

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0MyFirstWindowsService.exe
Net Start MyFirstWindowsService
sc config MyFirstWindowsService start= auto
pause

stop.bat

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0MyFirstWindowsService.exe
pause

运行statr.bat

右键 我的电脑  管理

若要卸载该服务,运行stop.bat

最新文章

  1. 基于JQuery实现的文本框自动填充功能
  2. [LeetCode] Happy Number 快乐数
  3. Yaf(Yet Another Framework)用户手册 yii框架手册
  4. mysql之路【第三篇】
  5. Scrum流程
  6. Ajax防止重复提交
  7. C++访问权限【原创】
  8. NSURLSessionDataTask
  9. CocoaPods的安装及设置
  10. 线段树扫描线 HDU 1542
  11. PHP-无限级分类(迭代法创建)
  12. 清北学堂Day2
  13. [elk]验证mapping字段数和数据字段数关系
  14. SQL Server导入导出不丢主键和视图的方法
  15. [python]python2与python3版本的区别
  16. 技嘉B75-D3V主板BUG
  17. ARP协议,以及ARP欺骗
  18. OCIlib的几个函数的执行效率(附上pro*c的性能对比)
  19. 剑指offer三从头到尾打印链表
  20. React 组件协同关系

热门文章

  1. golang http get请求方式
  2. vue组件中data是个函数
  3. printk函数 打印设备编号
  4. 小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题
  5. C# 如何引用 WshShell 类
  6. vue-learning:29 - component - 组件三大API之三:slot
  7. 【35.53%】【POJ 2912】Rochambeau
  8. vue-learning:11 -js-nextTick()
  9. &lt;数论相关&gt;欧几里得与拓展欧几里得证明及应用
  10. 【GYM101409】2010-2011 ACM-ICPC, NEERC, Western Subregional Contest