System.Timer似乎在2天后停止Elapsed事件

时间:2016-05-11 02:46:51

标签: c# multithreading timer parallel-processing

我有一个非常简单的控制台应用程序,其中包含如下所示的全部高级代码:

 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。没有任何错误。我在这里唯一能想到的是,控制台应用程序可能会尝试移动或复制在其他地方打开的文件。

什么会导致Timer.Elapsed事件在简单的IO进程中停止触发?

我想也许这里有一个问题,比如程序内存耗尽等等;但是,我不存储任何增量变量,例如列表或任何类型的变量。

为了避免使用可能不需要的额外代码来污染帖子,我已将SFTPSync类添加到粘贴框中: http://pastebin.com/VfWbPpWt

0 个答案:

没有答案