我对Windows服务和线程有点新,所以我希望我不会在这里犯一个明显的错误。 我有一个应用程序,我在C#中运行各种networking维护types的活动。 该应用程序在我的本地机器上完美工作,我决定我希望它作为一个Windows服务运行,所以使用相同的代码做了适当的修改,再次在我的本地机器上工作。
我的问题出现在我的networking上的一个服务器端口。 非Windows服务代码再次正常工作,并按预期运行。 然而,Windows服务代码似乎什么都不做。 该进程安装正常,开始/停止罚款,但没有任何代码似乎正在执行,任何帮助debuggingVisual Studio中的Windows服务也将不胜感激。 这是我的OnStart过程中的代码似乎并没有执行。
smThread = new Thread(delegate() { sm.RunServerMonitor(ref run); }); smThread.Start(); dailyThread = new Thread(delegate() { dailyEvents(); }); dailyThread.Start();
因为非Windows服务代码的作品,我不相信我遇到权限types的问题,除非有不同的权限,需要设置为允许服务远程执行任务比我需要的普通C#代码做同样的。
谢谢,Matt
感谢您的意见,问题是权限相关的。 当我点击该服务,并在“登录”选项卡下,并更改为具有管理权限的帐户,并能正常工作。 谢谢大家的帮助,非常感谢。
将下面一行添加为您的OnStart
方法中的第一行代码
while(!System.Diagnostics.Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } smThread = new Thread(delegate() { sm.RunserverMonitor(ref run); }); smThread.Start(); dailyThread = new Thread(delegate() { dailyEvents(); }); dailyThread.Start();
您可以在while
循环之后的下一行中的代码中设置一个断点并启动服务。 然后,从Visual Studio中,附加到服务进程进行调试。