我正在建立一项服务。基本上,它等待文件到达目录然后将它们加密到另一个目录然后删除它们。当它不是服务时它工作正常,但它不作为服务工作。当我中断服务以进行调试时,它会被卡在
上' 100.E-03 5.65581E-06'.split() == ['100.E-03', '5.65581E-06']
当文件进入指定目录时,并且实际上似乎从未执行过代码。这是我的第一项服务,我的很多代码来自AES encryption on large files和https://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx任何输入都将非常感谢。
ServiceBase.Run(ServicesToRun);
答案 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();
[...]