• 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

  • 相关阅读:
    Python里的目录方法
    PythonFile对象的属性
    Python read和write方法
    Python打开和关闭文件
    Python打印到屏幕_读取键盘输入
    Python包
    Python globals和locals函数_reload函数
    Python dir( )函数
    【C 语言】一元二次方程
    【C语言】已知三角形三边长,求三角形面积
  • 原文地址:https://www.cnblogs.com/iiwen/p/15753942.html
Copyright © 2020-2023  润新知