c# - 将 C# 控制台应用程序作为 Windows 服务运行

标签 c# .net c#-4.0 windows-services console-application

我有一个基本的 C# 控制台应用程序,我想将其作为 Windows 服务运行。

我已经使用 sc create 创建了 Windows 服务。这工作正常,我可以在 services.msc 下看到我的服务。当我尝试启动此服务时,出现以下错误:

Could not start the PROJECT service on Local Computer. Error 1053: The service did not respond to the start or control request in a timely fashion.`

我了解到这可能是因为服务代码的执行时间超过 30000 毫秒。因此,我删除了大部分代码,几乎没有执行任何代码。但同样的错误仍然存​​在。

我正在为这个项目使用 .NET 3.5。

什么会导致这种情况?

最佳答案

您不能只采用任何控制台应用程序并作为 Windows 服务运行。首先,您需要实现继承自 ServiceBase 的服务类,然后在入口点 (Main) 中,您需要使用 ServiceBase.Run(new你的服务())。在您的服务类中,您需要定义服务开始和结束时发生的情况。

理想情况下,您也应该将 ServiceInstaller 添加到程序集中。这样您就可以预设服务属性,并使用 installutil.exe 安装服务。

关于c# - 将 C# 控制台应用程序作为 Windows 服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222020/

相关文章:

.net - 如何在图形对象上绘制半透明文本?

c# - 从查询结果中重新排序单个项目

asp.net-mvc-3 - 在嵌入式 MongoDB 文档中强制生成新的 _id

wcf - 如何为 WCF 自托管服务定义配置多个端点?

c# - 什么是 Type.GUID,它与 Type.Equals() 有什么关系?

c# - 使用 AJAX 调用的 JavaScript 对话框不同步

c# - SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为 5.5.1,需要身份验证

c# - 将带有值的变量传递给 postgresql 数据库

c# - 验证规则

c# - 如果特定单元格值在数据表 C# 中包含零,则跳过整行