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

  • 相关阅读:
    宋词:一剪梅,雨打梨花深闭门。唐寅
    算法整理之动态规划
    与君相恋100次
    死循环之----恐怖游轮
    IOS 霓虹灯效果
    IOS 在viewController上添加视频
    iOS UIImagePickerController拍照与摄像
    socket开发基础
    RunLoop 原理和核心机制
    Objective-C的Runtime System
  • 原文地址:https://www.cnblogs.com/iiwen/p/15753942.html
Copyright © 2011-2022 走看看