程序运行良好,直到我把它变成一个服务

时间:2016-10-17 19:04:59

标签: c# service

我正在建立一项服务。基本上,它等待文件到达目录然后将它们加密到另一个目录然后删除它们。当它不是服务时它工作正常,但它不作为服务工作。当我中断服务以进行调试时,它会被卡在

'      100.E-03             5.65581E-06'.split() == ['100.E-03', '5.65581E-06']
当文件进入指定目录时,

并且实际上似乎从未执行过代码。这是我的第一项服务,我的很多代码来自AES encryption on large fileshttps://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx任何输入都将非常感谢。

    ServiceBase.Run(ServicesToRun);

1 个答案:

答案 0 :(得分:1)

您正在创建新计时器

System.Timers.Timer timer = new System.Timers.Timer();

中有一个本地范围
protected override void OnStart(string[] args)

当它超出范围时,可以进行垃圾回收。这可能迟早会发生,因此根据收集垃圾的时间,您的服务可能会更短或更长。

将计时器声明为与服务一样长的字段:

System.Timers.Timer _timer;

protected override void OnStart(string[] args)
{
    [...]
    _timer = new System.Timers.Timer();
    _timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
    _timer.Start();
    [...]