C# 写一个简单的Windows Service的服务程序

项目创建及设定部分

使用VS2019创建项目,选择C# Service的选项

按照你喜欢的方式命名,我这边就默认了

添加安装服务,在Service1.cs[Design]中

在设计界面右击,选择如下的"Add Installer"

在出现的"ProjectInstaller.cs[Design]"中的serviceProcessInstaller1属性中的Account中选择“LocalSystem”

在出现的"ProjectInstaller.cs[Design]"中的serviceInstall1属性中的ServiceName中设定你想要的名字,例如我设定的名字叫Tody;那在微软的服务系统中,名字就叫Tody;

代码编写部分

右击Service1.cs,选择“View Code”的选项,或直接按F7按钮进入代码部分

如下为Service1的类,这是我们可以在OnStart和OnStop的函数中增加我们的代码;

详细代码如下:

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 WindowsService1
{
    public partial class Service1 : ServiceBase
    {

        private readonly Timer TodyTimer;

        internal void TodyTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                using (FileStream fileStream = new FileStream(@"E:\Tody.log", FileMode.Append))
                {
                    using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    {
                        streamWriter.WriteLine("{0} - {1} ", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "Tody Test");
                    }
                }
            }
            catch (Exception ex)
            {
               //ex.Message;
            }
        }

        public Service1()
        {
            InitializeComponent();

            // Initial Timer 
            TodyTimer = new Timer(1500); //1.5s
            TodyTimer.Elapsed += TodyTimer_Elapsed;

        }

        protected override void OnStart(string[] args)
        {
            TodyTimer.Start();
        }

        protected override void OnStop()
        {
            TodyTimer.Stop();
        }
    }
}
安装服务部分

在VS2019的命令行中运行安装程序:InstallUtil.exe,该程序在"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe"中

在编译的目录下运行指令:installutil WindowsService1.exe  进行服务的安装(记得要用管理员

如果要卸载服务的话installutil /u WindowsService1.exe

如下安装成功的结果

启动或停止服务

在系统服务中找到Tody的服务,如下图,右击启动

启动后在E盘的根目录产生了一个文件,就是代码中定义的;

文件中的结果

停止服务则直接选择停止就可以了;

这样,一个简单的服务程序就这样搞定了;应该不难吧;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/665428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu server 24 (Linux) Snort3 3.2.1.0 Guardian IPtables 联动实战 主动防御系统(ids+ips)

一 Snort3 安装配置,参考:Ubuntu server 24 安装配置 snort3 3.2.1.0 网络入侵检测防御系统 配置注册规则集-CSDN博客 二 安装主动防御程序Guardian 1 下载,解压 tar zxvf guardian-1.7.tar.gz cd guardian-1.7/ 2 配置 #拷贝文件 sudo cp guard…

如何从浅入深理解transformer?

前言 在人工智能的浩瀚海洋中,大模型目前无疑是其中一颗璀璨的明星。从简单的图像识别到复杂的自然语言处理,大模型在各个领域都取得了令人瞩目的成就。而在这其中,Transformer模型更是成为大模型技术的核心。 一、大模型的行业发展现状如…

docker删除所有容器

笔记 要使用 Docker 删除所有容器(无论是停止的还是正在运行的),可以按照以下步骤操作: 1. **删除所有正在运行的容器**: 首先,您需要停止所有正在运行的容器。可以使用以下命令: dock…

官方正版 | FastCopy - Windows 上最快的文件复制&备份软件

『FastCopy 软件概述』 FastCopy 是一款高性能的文件复制和备份工具,专为 Windows 操作系统设计。它以其卓越的速度和丰富的功能,在用户中赢得了良好的声誉。以下是 FastCopy 的主要特点和优势: 速度优化:FastCopy 通过多线程、异…

c# - 运算符 << 不能应用于 long 和 long 类型的操作数

Compiler Error CS0019 c# - 运算符 << 不能应用于 long 和 long 类型的操作数 处理方法 特此记录 anlog 2024年5月30日

Day10:平面转换、渐变色

目标&#xff1a;使用位移、缩放、旋转、渐变效果丰富网页元素的呈现方式。 一、平面转换 1、简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用。 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09;。 平面转换…

工业安全智勇较量,赛宁网安工业靶场决胜工业网络攻防对抗新战场

2024年1月30日&#xff0c;工信部发布《工业控制系统网络安全防护指南》&#xff08;工信部网安〔2024〕14号&#xff09;&#xff0c;围绕安全管理、技术防护、安全运营、责任落实四方面提出安全防护要求&#xff0c;强调聚焦安全薄弱关键环节&#xff0c;强化技术应对策略&am…

说说你对单例模式的理解?如何实现?

一、是什么 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a;创建型模式&#xff0c;提供了一种创建对象的最佳方式&#xff0c;这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建 在应用程序运行期间&am…

代码随想录算法训练营第四十四天|01 背包、动态规划:01背包理论基础(滚动数组)、416. 分割等和子集

01 背包 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;46. 携带研究材料&#xff08;第六期模拟笔试&#xff09; 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物…

Day-04python模块

一、模块 1-1 Python 自带模块 Json模块 处理json数据 {"key":"value"} json不是字典 本质是一个有引号的字符串数据 json注意点 {} 中的数据是字符串引号必须是双引号 使用json模块可以实现将json转为字典&#xff0c;使用字典的方法操作数据 。 或者将…

自动驾驶中的长尾问题

自动驾驶中的长尾问题 定义 长尾问题&#xff08;Long-Tail Problem&#xff09;是指在数据分布中&#xff0c;大部分的数据集中在少数类别上&#xff0c;而剩下的大多数类别却只有少量的数据。这种数据分布不平衡的现象在许多实际应用中广泛存在&#xff0c;特别是在自动驾驶…

自适应Q的容积卡尔曼滤波MATLAB例程|完整代码

前言 给出自适应容积卡尔曼滤波&#xff08;ACKF&#xff09;的MATLAB代码。 主要思想 通过自适应状态协方差Q来实现&#xff0c;得到了比传统方法更低的估计误差。适用于Q无法获取、估计不准、变化不定的情况&#xff0c;只有一个M文件&#xff0c;方便运行&#xff0c;保运…

一分钟学习数据安全——自主管理身份SSI基本概念

之前我们已经介绍过数字身份的几种模式。其中&#xff0c;分布式数字身份模式逐渐普及演进的结果就是自主管理身份&#xff08;SSI&#xff0c;Self-Sovereign Identity&#xff09;。当一个人能够完全拥有和控制其数字身份&#xff0c;而无需依赖中心化机构&#xff0c;这就是…

3D轻量化的三大应用解决方案

老子云平台https://www.laozicloud.com/ 为不同应用场景提供了三大解决方案。 01 单模型轻量化解决方案 数字化时代&#xff0c;越来越多的C2M定制、文旅、电商等行业&#xff0c;为了开拓市场&#xff0c;提升企业竞争力&#xff0c;开始把目光投向产品的3D展示交互。 单模…

Fragment后续

1.Fragment 生命周期 2.Fragment动态注册 2.1 activity package com.tiger.mystudyactivity;import android.graphics.Color; import android.os.Bundle; import android.util.TypedValue;import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widge…

VirtualBox7.x下载安装CentOS7安装网络配置

1、VirtualBox7.x下载安装 1.1、VirtualBox7.x下载 1.1.1、去哪里下载&#xff1f; 一般我们去官方网站&#xff08;https://www.virtualbox.org/wiki/Downloads&#xff09;下载、但国内访问速率较慢&#xff0c;更有甚者下载速度仅仅只有0.1kb/s&#xff0c;极大的拖延了项…

环境变量 | 是不是必须配置?怎么配置?

本文基于mysql和python环境&#xff0c;简单介绍了“什么是环境变量”、“环境变量是不是必须配置”、“环境变量配置方法”及“常用环境变量 path ”。 1、什么是环境变量 释义&#xff1a;一般是指在操作系统中&#xff0c;用来指定操作系统运行环境的一些参数&#xff0c;…

前端开发的未来:回归简约,还是拥抱复杂?

今天和大家分享一篇国外大佬的文章&#xff0c;他提出了一个很有意思的观点——我们熟悉的前端开发正在逐渐消亡&#xff0c;并预测我们很快会回到最初的状态。让我们一起来探讨一下他的观点&#xff0c;看看你是赞同&#xff0c;欢迎大家在评论区探讨和交流。 回顾前端开发的历…

picoLLM:大模型的量化魔术师 上

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调重新阅读。而最新科技&#xff08;Mamba&#xff0c;xLSTM,KAN&#xff09;则提供了大模…

易语言推箱子游戏(附带源码)

易语言推箱子游戏 易语言易语言的安装易语言功能特色易语言安装步骤易语言常见问题 导入游戏源码部分源码领取源码下期更新预报 易语言 易语言&#xff08;EPL&#xff09;是一门以中文作为程序代码编程语言&#xff0c;其以“易”著称&#xff0c;创始人为吴涛。易语言早期版…