好的,如果您需要关于C语言编程的帮助,比如代码示例、算法实现、编程问题解答等,请告诉我具体的需求,我会尽力提供帮助。

2026-03-30 21:011阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2571个文字,预计阅读时间需要11分钟。

编程语言:1. Python - 简单易学,广泛应用于数据分析、人工智能等领域。2. Java - 强大且广泛使用,适用于企业级应用和安卓开发。3. JavaScript - 网页开发的核心语言,支持前端和后端开发。4. C++ - 高效且具有挑战性,用于系统软件、游戏开发等。5. C# - 微软开发的首选语言,广泛应用于桌面和移动应用。6. Ruby - 以简洁著称,适用于Web开发。7. PHP - 服务器端脚本语言,广泛用于网站开发。8. Swift - 苹果开发的编程语言,用于iOS和macOS应用。9. Go - 高效并发,适用于云服务和网络应用。10. Kotlin - 用于Android开发,简化Java代码。11. Scala - 功能丰富的语言,用于大数据处理。12. Rust - 安全且高效的系统编程语言。13. TypeScript - JavaScript的超集,提供类型系统。14. Perl - 适用于文本处理和系统管理的语言。15. Shell - 类似于C语言的脚本语言,用于系统管理。16. Haskell - 函数式编程语言,用于并发和并行计算。17. Swift - 苹果开发的编程语言,用于iOS和macOS应用。18. Elm - 用于Web应用的函数式语言,注重安全性和可维护性。19. Dart - 谷歌开发的编程语言,用于Flutter应用开发。20. Lua - 轻量级脚本语言,常用于游戏开发。21. R - 统计分析和图形处理语言。22. Scala - 功能丰富的语言,用于大数据处理。23. Groovy - 用于Java平台的多用途语言。24. F# - 函数式编程语言,适用于并发和异步编程。25. Lua - 轻量级脚本语言,常用于游戏开发。

开发语言:C#

开发环境: Visual Studio 2022

微软官方文档:learn.microsoft.com/zh-cn/dotnet/framework/windows-services/


最近在公司要求使用Windows服务作为消息队列的消费者,所以自行研究了一下C#中Windows服务如何创建以及如何使用,部署的方式。我是西瓜程序猿,此篇记录一下供大家参考学习。


一、Windows服务概述

1.1-Windows服务是什么?

Windows服务是在Windows操作系统上,以后台形式运行的应用程序。它们可以在系统启动时自动启动,并且独立于用户登录。Windows服务通常用于执行那些长时间运行、无需用户交互或需要在后台持续执行的任务。


1.2-Windows能用来做什么?

  1. 后台任务和自动化:可以使用Windows服务来执行重复性的计划任务、数据同步、定期备份、报告生成等。
  2. 网络服务:Windows服务可以作为网络服务器提供网络服务,如Web服务器、FTP服务器、邮件服务器等。
  3. 定时任务:Windows服务可以创建定时任务并在指定时间间隔或特定事件发生时触发执行操作。
  4. 数据处理:可以使用Windows服务进行数据处理、数据转换、数据清洗等批量处理任务。
  5. 消息队列:可以用于消息队列的消费者,后台任务一直和消息队列保持长连接,需要消费时会自动接收到进行业务处理。


1.3-Windows服务有什么优势?

  1. 后台执行:Windows服务在后台运行,不会干扰用户的工作,也无需用户登录即可持续执行任务。
  2. 系统级别权限:Windows服务可以在系统级别运行,具有更高的权限,可以访问系统资源和执行敏感操作。
  3. 自动启动:Windows服务可以在系统启动时自动启动,确保任务始终处于运行状态。
  4. 可靠性和稳定性:Windows服务被设计为长时间运行的应用程序,具有较高的可靠性和稳定性。


二、创建Windows服务

2.1-创建Windows服务项目

(1)打开开发工具,然后选择,点击下一步。

注意:Windows服务只有在.NET Framework版本中才有了,在跨平台中使用Worker Service。


(2)修改项目名称和项目存储目录,项目名称我写的是,然后框架我选择的是,这个可以根据自己的需要填写和选择,然后点击。

创建好的目录如下:是主程序的入口,是服务的入口,可以创建多个,然后在Prodrams.cs中配置就好了。


(3)服务名称可以重命名修改,此处我重命名为, Program.cs文件中也相对应的也要进行修改。

(4)然后我们就可以在中写业务逻辑代码了,有很多种方式可以定位到要写的具体文件,先列举两种常用的。

方法一:在文件中,找到这个类,按键盘上的F12可以直接进入查看文件。


方法二:直接右击,然后点击。

业务代码写到这里面:

到这一步服务就创建好了,然后就写具体的业务代码就行了。注意:服务必须至少重写 OnStart 和 OnStop 才有用。


2.2-服务可以重写的方法

/// <summary> /// 服务启动:指示服务开始运行时应采取的操作。 必须在此过程中为服务编写代码才能执行有用的操作。 /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { } /// <summary> /// 服务停止:指示在服务停止运行时应发生什么情况。 /// </summary> protected override void OnStop() { } /// <summary> /// 暂停:指示在服务暂停时应发生什么情况。 /// </summary> protected override void OnPause() { } /// <summary> /// 继续:指示服务在暂停后恢复正常运行时应发生什么情况。 /// </summary> protected override void OnContinue() { } /// <summary> /// 停止前:指示在系统关闭之前应发生什么情况(如果此时服务正在运行)。 /// </summary> protected override void OnShutdown() { }


2.3-配置日志(log4net)

为了方便测试,先介绍一下如何使用log4net做日志记录,当日志启动时和停止时我们记录一下。

(1)我们在项目目录下新建一个文件夹,然后再创建一个文件为。


(2)内容如下。

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <E:\DebuginServers.sB惑的基个依赖项。试图加载格式不正确的程序。

解决:请看本文第点


3、在执行文件时,报路径不存在相关的错

执行命令:InstallUtil /u D:\项目演示临时保存\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe

错误信息:C:\Windows\system32>InstallUtil /u D:\椤圭洰婕旂ず涓存椂淇濆瓨\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe Microsoft (R) .NET Framework 安装实用工具版本 4.8.9037.0 版权所有 (C) Microsoft Corporation。保留所有权利。 在初始化安装时发生异常: System.IO.FileNotFoundException: 未能加载文件或程序集“file:///D:\椤圭洰婕旂ず涓存椂淇濆瓨\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe”或它的某一个依赖项。系统找不到指定的文件。。

分析:这个错是乱码导致的,执行的命令是这个,但是在控制台里面显示的是这个。 出现了乱码,这可能是由于控制台编码设置不正确导致的 。

解决:使用正确的编码,尝试将控制台编码设置为与文件路径所使用的编码一致。例如,如果文件路径是UTF-8编码,您可以在控制台中执行以下命令进行设置:

chcp 65001

截图:


四、高效工具:编写bat启动卸载服务

4.1-安装服务

我们可以创建一个文件输入以下内容:

chcp 65001 REM Install InstallUtil 项目启动执行文件全路径 pause

注意:执行这个命令需要运行,不然会报这个错误:

System.InvalidOperationException: 无法打开计算机“.”上的服务控制管理器。此操作可能需要其他特权。

引发了内部异常 System.ComponentModel.Win32Exception,错误消息如下: 拒绝访问。。

正确执行方式:


4.2-启动服务

我们可以创建一个文件输入以下内容:

REM Install net start 服务名 pause

注意:执行这个命令需要运行,不然会报这个错误:

发生系统错误。

拒绝访问。


4.3-停止服务

我们可以创建一个文件输入以下内容:

REM Install net stop 服务名 pause

注意:执行这个命令需要运行,不然会报这个错误:

发生系统错误。

拒绝访问。


4.4-卸载服务

我们可以创建一个文件输入以下内容:

chcp 65001 REM Install InstallUtil /u 项目启动执行文件全路径 pause



版权声明:本文为原创文章,版权归 [西瓜程序猿] 所有,转载请注明出处,有任何疑问请私信咨询。

原文链接:blog.51cto.com/kimiliucn/7122891

本文共计2571个文字,预计阅读时间需要11分钟。

编程语言:1. Python - 简单易学,广泛应用于数据分析、人工智能等领域。2. Java - 强大且广泛使用,适用于企业级应用和安卓开发。3. JavaScript - 网页开发的核心语言,支持前端和后端开发。4. C++ - 高效且具有挑战性,用于系统软件、游戏开发等。5. C# - 微软开发的首选语言,广泛应用于桌面和移动应用。6. Ruby - 以简洁著称,适用于Web开发。7. PHP - 服务器端脚本语言,广泛用于网站开发。8. Swift - 苹果开发的编程语言,用于iOS和macOS应用。9. Go - 高效并发,适用于云服务和网络应用。10. Kotlin - 用于Android开发,简化Java代码。11. Scala - 功能丰富的语言,用于大数据处理。12. Rust - 安全且高效的系统编程语言。13. TypeScript - JavaScript的超集,提供类型系统。14. Perl - 适用于文本处理和系统管理的语言。15. Shell - 类似于C语言的脚本语言,用于系统管理。16. Haskell - 函数式编程语言,用于并发和并行计算。17. Swift - 苹果开发的编程语言,用于iOS和macOS应用。18. Elm - 用于Web应用的函数式语言,注重安全性和可维护性。19. Dart - 谷歌开发的编程语言,用于Flutter应用开发。20. Lua - 轻量级脚本语言,常用于游戏开发。21. R - 统计分析和图形处理语言。22. Scala - 功能丰富的语言,用于大数据处理。23. Groovy - 用于Java平台的多用途语言。24. F# - 函数式编程语言,适用于并发和异步编程。25. Lua - 轻量级脚本语言,常用于游戏开发。

开发语言:C#

开发环境: Visual Studio 2022

微软官方文档:learn.microsoft.com/zh-cn/dotnet/framework/windows-services/


最近在公司要求使用Windows服务作为消息队列的消费者,所以自行研究了一下C#中Windows服务如何创建以及如何使用,部署的方式。我是西瓜程序猿,此篇记录一下供大家参考学习。


一、Windows服务概述

1.1-Windows服务是什么?

Windows服务是在Windows操作系统上,以后台形式运行的应用程序。它们可以在系统启动时自动启动,并且独立于用户登录。Windows服务通常用于执行那些长时间运行、无需用户交互或需要在后台持续执行的任务。


1.2-Windows能用来做什么?

  1. 后台任务和自动化:可以使用Windows服务来执行重复性的计划任务、数据同步、定期备份、报告生成等。
  2. 网络服务:Windows服务可以作为网络服务器提供网络服务,如Web服务器、FTP服务器、邮件服务器等。
  3. 定时任务:Windows服务可以创建定时任务并在指定时间间隔或特定事件发生时触发执行操作。
  4. 数据处理:可以使用Windows服务进行数据处理、数据转换、数据清洗等批量处理任务。
  5. 消息队列:可以用于消息队列的消费者,后台任务一直和消息队列保持长连接,需要消费时会自动接收到进行业务处理。


1.3-Windows服务有什么优势?

  1. 后台执行:Windows服务在后台运行,不会干扰用户的工作,也无需用户登录即可持续执行任务。
  2. 系统级别权限:Windows服务可以在系统级别运行,具有更高的权限,可以访问系统资源和执行敏感操作。
  3. 自动启动:Windows服务可以在系统启动时自动启动,确保任务始终处于运行状态。
  4. 可靠性和稳定性:Windows服务被设计为长时间运行的应用程序,具有较高的可靠性和稳定性。


二、创建Windows服务

2.1-创建Windows服务项目

(1)打开开发工具,然后选择,点击下一步。

注意:Windows服务只有在.NET Framework版本中才有了,在跨平台中使用Worker Service。


(2)修改项目名称和项目存储目录,项目名称我写的是,然后框架我选择的是,这个可以根据自己的需要填写和选择,然后点击。

创建好的目录如下:是主程序的入口,是服务的入口,可以创建多个,然后在Prodrams.cs中配置就好了。


(3)服务名称可以重命名修改,此处我重命名为, Program.cs文件中也相对应的也要进行修改。

(4)然后我们就可以在中写业务逻辑代码了,有很多种方式可以定位到要写的具体文件,先列举两种常用的。

方法一:在文件中,找到这个类,按键盘上的F12可以直接进入查看文件。


方法二:直接右击,然后点击。

业务代码写到这里面:

到这一步服务就创建好了,然后就写具体的业务代码就行了。注意:服务必须至少重写 OnStart 和 OnStop 才有用。


2.2-服务可以重写的方法

/// <summary> /// 服务启动:指示服务开始运行时应采取的操作。 必须在此过程中为服务编写代码才能执行有用的操作。 /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { } /// <summary> /// 服务停止:指示在服务停止运行时应发生什么情况。 /// </summary> protected override void OnStop() { } /// <summary> /// 暂停:指示在服务暂停时应发生什么情况。 /// </summary> protected override void OnPause() { } /// <summary> /// 继续:指示服务在暂停后恢复正常运行时应发生什么情况。 /// </summary> protected override void OnContinue() { } /// <summary> /// 停止前:指示在系统关闭之前应发生什么情况(如果此时服务正在运行)。 /// </summary> protected override void OnShutdown() { }


2.3-配置日志(log4net)

为了方便测试,先介绍一下如何使用log4net做日志记录,当日志启动时和停止时我们记录一下。

(1)我们在项目目录下新建一个文件夹,然后再创建一个文件为。


(2)内容如下。

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <E:\DebuginServers.sB惑的基个依赖项。试图加载格式不正确的程序。

解决:请看本文第点


3、在执行文件时,报路径不存在相关的错

执行命令:InstallUtil /u D:\项目演示临时保存\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe

错误信息:C:\Windows\system32>InstallUtil /u D:\椤圭洰婕旂ず涓存椂淇濆瓨\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe Microsoft (R) .NET Framework 安装实用工具版本 4.8.9037.0 版权所有 (C) Microsoft Corporation。保留所有权利。 在初始化安装时发生异常: System.IO.FileNotFoundException: 未能加载文件或程序集“file:///D:\椤圭洰婕旂ず涓存椂淇濆瓨\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe”或它的某一个依赖项。系统找不到指定的文件。。

分析:这个错是乱码导致的,执行的命令是这个,但是在控制台里面显示的是这个。 出现了乱码,这可能是由于控制台编码设置不正确导致的 。

解决:使用正确的编码,尝试将控制台编码设置为与文件路径所使用的编码一致。例如,如果文件路径是UTF-8编码,您可以在控制台中执行以下命令进行设置:

chcp 65001

截图:


四、高效工具:编写bat启动卸载服务

4.1-安装服务

我们可以创建一个文件输入以下内容:

chcp 65001 REM Install InstallUtil 项目启动执行文件全路径 pause

注意:执行这个命令需要运行,不然会报这个错误:

System.InvalidOperationException: 无法打开计算机“.”上的服务控制管理器。此操作可能需要其他特权。

引发了内部异常 System.ComponentModel.Win32Exception,错误消息如下: 拒绝访问。。

正确执行方式:


4.2-启动服务

我们可以创建一个文件输入以下内容:

REM Install net start 服务名 pause

注意:执行这个命令需要运行,不然会报这个错误:

发生系统错误。

拒绝访问。


4.3-停止服务

我们可以创建一个文件输入以下内容:

REM Install net stop 服务名 pause

注意:执行这个命令需要运行,不然会报这个错误:

发生系统错误。

拒绝访问。


4.4-卸载服务

我们可以创建一个文件输入以下内容:

chcp 65001 REM Install InstallUtil /u 项目启动执行文件全路径 pause



版权声明:本文为原创文章,版权归 [西瓜程序猿] 所有,转载请注明出处,有任何疑问请私信咨询。

原文链接:blog.51cto.com/kimiliucn/7122891