我有一个非常简单的控制台应用程序,其中包含如下所示的全部高级代码:
class Program
{
static Timer timer = new Timer(TimeSpan.FromMinutes(5).TotalMilliseconds);
static void Main(string[] args)
{
timer.Elapsed += Timer_Elapsed;
timer.Start();
Timer_Elapsed(null, null);
Console.ReadKey();
}
private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
timer.Stop();
var syncSftp = new Tasks.WindowsServiceTasks.SFTPSync();
Common.Logging.Logger = new Common.Logging.TextFileAndConsoleLogger();
syncSftp.Execute();
timer.Start();
}
}
似乎有一种奇怪的现象,大约2天后计时器似乎停止触发Elapsed
事件。
此应用程序的快速纲要:它监视服务器文件夹并通过SFTP发送文件。它也会通过SFTP传出并抓取文件,并将它们存储在本地文件夹中。我已登录每个服务器连接,文件移动,复制等。
似乎在2天后控制台应用程序停止显示任何日志记录。这就是我认为Elapsed
事件停止发射的原因。不仅如此,我们还停止从入站SFTP获取文件并停止发送outbounds。没有任何错误。我在这里唯一能想到的是,控制台应用程序可能会尝试移动或复制在其他地方打开的文件。
我想也许这里有一个问题,比如程序内存耗尽等等;但是,我不存储任何增量变量,例如列表或任何类型的变量。
为了避免使用可能不需要的额外代码来污染帖子,我已将SFTPSync类添加到粘贴框中: http://pastebin.com/VfWbPpWt