C# 我的服务不循环

C# 我的服务不循环,c#,C#,这是我的第一个服务项目。 如果我将此代码作为控制台运行,则循环工作,但如果我将其转换为服务,则它最初会执行操作,但不会循环。 你能帮我纠正一下吗? tnx 我正在粘贴程序的完整代码。第一个代码在哪里 如果没有这种上下文,我最好的猜测是您的OnStart()方法会触发,然后服务会在该方法结束后立即退出,因为已经没有什么事情可做了 另外,我不喜欢服务的while(true){Sleep(60000);//do work}模式。相反,您希望寻找一个实际阻止执行以保持代码运行的函数。示例包括TcpLis

这是我的第一个服务项目。 如果我将此代码作为控制台运行,则循环工作,但如果我将其转换为服务,则它最初会执行操作,但不会循环。 你能帮我纠正一下吗? tnx


我正在粘贴程序的完整代码。

第一个代码在哪里

如果没有这种上下文,我最好的猜测是您的OnStart()方法会触发,然后服务会在该方法结束后立即退出,因为已经没有什么事情可做了


另外,我不喜欢服务的
while(true){Sleep(60000);//do work}
模式。相反,您希望寻找一个实际阻止执行以保持代码运行的函数。示例包括
TcpListener.AcceptTcpClient()
Thread.Join()
。如果您找不到类似的服务内容,您可能需要执行类似于设置计划任务的操作。

您已将代码放置在函数之外。问题中显示的内容甚至不应该编译,而且肯定不会循环

注意
//TODO:
函数定义中的
OnStart
注释:

protected override void OnStart(string[] args)
{
    base.OnStart(args);

    //TODO: place your start code here
}

首先想到的是服务的权限。您是否尝试过调试它(或者至少检查事件日志)以查看发生了什么?当我启动服务时,它会执行一些操作。问题是它没有循环+你确定它第一次开始循环吗?已经提出的答案(以及您对它们的评论)似乎倾向于将代码作为服务运行根本不起任何作用。附加一个调试器并证明不是这样。如果我启动/重新启动服务,它会写入“c:\\KICB.log”。但您的程序实例可能会立即死亡(假设它是作为控制台应用程序设置的)。在条目写入日志后检查任务管理器,你确定服务仍在运行吗?因此,我应该将该循环放在OnStart()中?@user998878-Windows服务没有
Main
。我粘贴了程序的完整代码。对不起,如果我解释错了
protected override void OnStart(string[] args)
{
    base.OnStart(args);

    //TODO: place your start code here
}