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

  • 相关阅读:
    用例图设计
    第二次结队作业
    第一次结对作业
    第二次个人编程作业
    简易的中文语言翻译器
    第一次博客作业
    个人总结
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/iiwen/p/15753942.html
Copyright © 2011-2022 走看看