控制台应用上的定时器,严格的行为

时间:2018-06-18 21:14:52

标签: c# multithreading timer

我有很多后端控制台App,需要在它上面使用一个计时器我使用以下内容在主方法中启动和维护控制台App上的计时器:

 System.Timers.Timer statustimer =
                    new System.Timers.Timer(
                        double.Parse(ConfigurationManager.AppSettings["NotificationSendPeriod"]));
                statustimer.Elapsed += ((sender, eventArgs) =>
                {
                    try
                    {
                        ProcessData();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);

                    }
                });
                statustimer.Enabled = true; Console.ReadLine();

并且在ProcessData中我每次调用方法时都会启动一个新线程(我控制一个计数器并行运行的数量来自app.config

 public static async Task<bool> ProcessData()
    {
        try
        {
            new Thread(() =>
            {
                // Do work here 

            }).Start();



            return true;
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception);
            _logInstance?.Error(exception, $"{exception.Message}\n{exception.StackTrace}");
            return false;
        }
    }

我注意到,即使我使用Console.Readline(),控制台应用程序关闭了一段时间之后使用上面的代码,或者挂机并且没有任何反应

知道上述代码中的错误以及如何修复

0 个答案:

没有答案