首页 > 系统相关 >C# 创建 Windows Service 项目

C# 创建 Windows Service 项目

时间:2024-08-12 13:16:48浏览次数:8  
标签:string Service C# void sw MyTimer Windows WriteLine Service1

C# 创建 WindowsService 服务项目
image
空白处,右键选择“添加安装程序”
image
可以看到两个控件,点击右击第一个控件,打开属性设计器,将其中的Account设置为LocalSystem(本地服务),
image
接下来,右击上面的第二个控件,打开属性界面,设置ServiceName,和将其中的StratType设置为Automatic,
image

public partial class Service1 : ServiceBase
{
    private readonly Timer _MyTimer;
    public Service1()
    {
        InitializeComponent();
        _MyTimer = new Timer(10*1000); //10秒钟启动一次
        _MyTimer.Elapsed += _MyTimerElapsed;
    }

    protected override void OnStart(string[] args)
    {
        _MyTimer.Start(); 
        WriteLog("Service1.OnStart");
    }

    protected override void OnStop()
    {
        _MyTimer.Stop();
        WriteLog("Service1.OnStop");
    }

    internal void _MyTimerElapsed(object sender, ElapsedEventArgs e)
    {
        WriteLog("开始执行了");
    }


    public void WriteLog(string msg)
    {
        string filePath = AppDomain.CurrentDomain.BaseDirectory + "Log";
        if (!Directory.Exists(filePath))
        {
            Directory.CreateDirectory(filePath);
        }
        string logPath = AppDomain.CurrentDomain.BaseDirectory + "Log\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
        try
        {
            using (StreamWriter sw = File.AppendText(logPath))
            {
                sw.WriteLine("消息:" + msg);
                sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                sw.WriteLine("**************************************************");
                sw.WriteLine();
                sw.Flush();
                sw.Close();
                sw.Dispose();
            }
        }
        catch (IOException e)
        {
            using (StreamWriter sw = File.AppendText(logPath))
            {
                sw.WriteLine("异常:" + e.Message);
                sw.WriteLine("时间:" + DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));
                sw.WriteLine("**************************************************");
                sw.WriteLine();
                sw.Flush();
                sw.Close();
                sw.Dispose();
            }
        }
    }

}

安装脚本 0.Install.bat

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe
Net Start ServiceTest
sc config ServiceTest start= auto
pause

卸载脚本 1.Uninstall.bat

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceTest.exe

标签:string,Service,C#,void,sw,MyTimer,Windows,WriteLine,Service1
From: https://www.cnblogs.com/vipsoft/p/18354755

相关文章

  • 159.302 The 8-Puzzle: Search Algorithms
    159.302ArtificialIntelligenceAssignment#1The8-Puzzle:SearchAlgorithmsMaximumnumberofmemberspergroup:3studentsDeadlineforsubmission:9thofSeptemberInstructionsYourtaskistowriteaC++programthatwillsolvethe8-puzzleprob......
  • 使用C语言构建Lua库
    Lua本身是用C语言编写的,因此使用C编写扩展可以更好地与Lua引擎集成,减少性能瓶颈,同时C语言提供了对底层硬件和操作系统功能的直接访问能力,让Lua可以通过C扩展来实现对文件系统、网络等高级功能的支持。因为C语言非常适合模块化编程,可以很容易地将复杂的Lua功能拆......
  • OpenCV学习过程(6)
    目录1.模板匹配方法:(一般建议使用归一化的后三种方法) 代码演示:2.傅里叶变换代码演示过程:显示幅度谱:低通滤波处理后的图像:高通滤波处理后的图像:1.模板匹配模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程......
  • 【CAD】CAD入门知识概念、功能和应用
    0.新建项目‘文件’-‘新建’-点击‘打开’旁边的“倒三角图标”-选择‘无样本打开-公制’1.基本操作与设置    右下角齿轮-草图与注释     绘图区-右键-选项-显示-十字光标大小-100    画线:画线结束空格收尾    移动:点击移动-点击对象......
  • Vue 3 Composition API:构建可复用逻辑的艺术
    Vue3引入了CompositionAPI,这是一种新的组件选项,允许开发者更灵活地组织组件逻辑。使用CompositionAPI,我们可以将组件逻辑分解为可复用的函数,从而提高代码的模块化和可维护性。本文将详细介绍如何使用Vue3的CompositionAPI创建可复用的逻辑。一、CompositionAP......
  • 开发者福音!ChatGPT 输出现支持预定义!
    ChatGPT输出可以更加可控了,OpenAI昨天发布了一款工具,该工具将以用户指定的精确格式返回查询结果。OpenAI首席执行官SamAltman表示,这是使用AI技术的开发人员提出最多的请求。1.OpenAI今年的重点:DevTools自2022年11月首次亮相以来,ChatGPT服务已被无数应用程序开......
  • 引发全球IT故障后 CrowdStrike在Def Con大会上接受“史诗级失败“奖
    CrowdStrike公司的软件更新引发了全球性的IT崩溃,而就在几周之后,CrowdStrike公司并没有回避聚光灯。事实上,该公司总裁迈克尔-森托纳斯(MichaelSentonas)甚至在Pwnie奖颁奖典礼上上台接受了"最史诗失败奖"。颁奖仪式在DefCon大会上举行,紧接在黑帽大会之后,CrowdStrike......
  • C语言编译和链接超详解
    文章目录1.翻译环境和运行环境2.翻译环境2.1预处理(预编译)2.2编译2.2.1词法分析2.2.2语法分析2.2.3语义分析2.3汇编2.4链接3.运行环境1.翻译环境和运行环境在ANSIC的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代......
  • 前端必知必会-CSS边框属性border
    文章目录CSS边框CSS边框样式border-styleCSS边框宽度border-widthCSS边框颜色border-colorCSS指定每条边的属性CSS简写边框属性CSS圆角边框border-radius总结CSS边框CSS边框属性允许您指定元素边框的样式、宽度和颜色。CSS边框样式border-styleborder-......
  • 前端必知必会-CSS边距Margin
    文章目录CSS边距Margin边距-各个侧面边距-简写属性CSS边距折叠总结CSS边距Margin边距Margin用于在元素周围、任何定义的边框之外创建空间。有一些属性可用于设置元素每侧的边距(顶部、右侧、底部和左侧)。边距-各个侧面CSS具有用于指定元素每侧边距的属......