我正在开发Windows服务(在Visual Studio 2008中),当我在调试模式下运行时,它可以正常工作:
static void Main()
{
#if DEBUG
Descarga myServicio = new Descarga();
myServicio.OnDebug();
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Descarga()
};
ServiceBase.Run(ServicesToRun);
#endif
}
OnDebugStart()
只调用Windows服务的OnStart()
方法,运行的线程只是一个无限运行的线程(直到调用OnStop()
)来检查服务仍然活着在线。
public Timer myTimer;
public string fileName;
string txtLog;
public Descarga()
{
InitializeComponent();
myTimer = new Timer();
myTimer.Interval = 10000;
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
}
protected override void OnStart(string[] args)
{
myTimer.Enabled = true;
}
当我在调试模式下启动时,这非常正常,但是当我在发布时运行它时,服务被托管,但代码不会执行。
我更改了服务的用户,问题仍在继续。
亲切的问候
答案 0 :(得分:1)
从我在代码中看到的内容
protected override void OnStart(string[] args)
{
myTimer.Enabled = true;
}
您的OnStart
正在启动计时器。当处于释放模式时,你没有打电话给我,我假设你的计时器正在启动服务。您还需要在发布模式下调用它。