• 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

  • 相关阅读:
    触发器
    新登录用户的次日成功的留存率
    获取薪水第二多的
    找到薪水比经理高的员工
    成绩排名
    exists 和 in
    sum+case 计数
    前N个员工的salary累计和
    员工的薪水按照salary进行按照1N的排名,相同salary并列
    洛谷2678 跳石头
  • 原文地址:https://www.cnblogs.com/iiwen/p/15753942.html
Copyright © 2020-2023  润新知