zoukankan      html  css  js  c++  java
  • Docker下.Net Core使用ReadLine无法阻断主进程问题

     原来的写法是

    Console.ReadLine(); 

    使用等待屏幕输入来阻断主线程的运行,而不输入就一直等待,也就完成了进程的存活。

    但是现在Docker环境下,这样做无法阻止了,写法失效了。

    下边是找到的资料,已经试过可用。

    https://www.cnblogs.com/hgjmagic/p/13915535.html

    新写法整理:

        class Program
        {
            //定义线程事件对象
            static readonly AutoResetEvent _closingEvent = new AutoResetEvent(false);
            static void Main(string[] args)
            {
    
                //服务启动
                Console.WriteLine("服务启动");
                //健康检查 
                Wa.Operation.Health.Check(true, true);
    
    
    
                /////////////////////////////////////////
                //业务代码写这里
                /////////////////////////////////////////
                
    
                //原来的阻断方式,可以保留
                System.Console.ReadLine();
    
                //定义事件,Docker下运行时阻断主进程
                Console.CancelKeyPress += ((s, a) => { Console.WriteLine("服务退出"); _closingEvent.Set(); });
                _closingEvent.WaitOne();
            }
        }

    看注释改代码,清楚易懂。

    要看原理的可以试完可用后,再去查类库,其实就是声明线程等待,以前是用的ReadLine的特性来做的而已。

    88

  • 相关阅读:
    CentOS6.9依赖包快速安装指南
    CentOS 6.5安装部署Zabbix 3.05指南
    Nginx最佳安装与优化
    Linux Bonding最优配置
    macOS下用命令行发邮件
    Linux iperf网络性能测试
    MTR网络诊断自动脚本实例
    nmon监控linux资源使用情况
    思科HSRP配置实例
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/iiwen/p/15753942.html
Copyright © 2011-2022 走看看