如何在计时器运行时停止应用程序关闭

时间:2017-06-24 19:56:11

标签: c#

namespace Client
{
    class Program
    {
        static TcpClient client = new TcpClient();
        static bool isServerOn = false;
        static void Main(string[] args)
        {
            Timer timer = new Timer(1000);
            timer.Elapsed += Update;
            timer.Enabled = true;
        }

        private static void Update(Object source, ElapsedEventArgs e)
        {
            try
            {
                client.Connect("127.0.0.1", 1233);

                if (isServerOn) return;
                isServerOn = true;
                Console.WriteLine("Server is On");
            } catch(Exception)
            {
                if (!isServerOn) return;
                isServerOn = false;
                Console.WriteLine("Server Is Off");
            }
        }
    }
}

我为我的客户端获取此代码并且计时器不运行,因为应用程序关闭后我运行它可以有人告诉我如何使计时器运行并且应用程序不会同时关闭

2 个答案:

答案 0 :(得分:3)

您可以使用下面的Console.ReadKey()Console.ReadLine()方法,但实际上应该将其设为 WindowsService 应用程序,而不是普通的控制台应用程序

    static void Main(string[] args)
    {
        Timer timer = new Timer(1000);
        timer.Elapsed += Update;
        timer.Enabled = true;
        Console.ReadKey();
    }

答案 1 :(得分:3)

您可以使用任务解决此问题。

试试这个或类似的东西:

    static void Main(string[] args)
    {
        Task t = Task.Run(async () => {
            do
            {
                Update();
                await Task.Delay(1000);
            } while (isServerOn);
        });
        t.Wait();
    }