哈哈,其实也看不出什么,也没法进入内核态,所以下一步只能到网上搜搜看,其实有经验的朋友肯定猜出来了,应该是控制台启用了 快捷编辑窗口,截图如下:

文章插图
快捷编辑窗口 简而言之就是用户可以在控制台上独占这个窗口 , 编辑一些内容,可一旦被用户独占,那程序侧就没法输出内容到 控制台窗口 上了,只能在 内核态 傻傻等等,这应该就是形成原因,画个图大概就像下面这样 。

文章插图
将信息告诉朋友后,朋友说他用的是 Windows 服务部署 , 但不管是什么模式部署,注释掉 Console.WriteLine 肯定没错 。
感谢如家的 邓工 提供的禁用 快捷编辑窗口 代码 。#region 关闭控制台 快速编辑模式、插入模式 const int STD_INPUT_HANDLE = -10; const uint ENABLE_QUICK_EDIT_MODE = 0x0040; const uint ENABLE_INSERT_MODE = 0x0020; [DllImport("kernel32.dll", SetLastError = true)] internal static extern IntPtr GetStdHandle(int hConsoleHandle); [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint mode); [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint mode); public static void DisbleQuickEditMode() { IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE); uint mode; GetConsoleMode(hStdin, out mode); mode &= ~ENABLE_QUICK_EDIT_MODE;//移除快速编辑模式 mode &= ~ENABLE_INSERT_MODE; //移除插入模式 SetConsoleMode(hStdin, mode); } #endregion三:总结这次卡死的事故,主要还是开发人员大量的使用 Console.WriteLine 来输出日志 , 在某个时刻输出端窗口因为各种原因被他人独占,导致程序侧无法输出内容到窗口而一直被迫等待,之后朋友将日志输出切换到文件模式,问题得以解决 。
其实这个问题很多新手朋友都会犯,特此记录下来 。
【记一次 .NET 某企业OA后端服务 卡死分析】
推荐阅读
- AlexNet-文献阅读笔记
- Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】
- 不用冰袋怎么做冰块(不用一次性冰袋做冰块怎么弄)
- 小米笔记本Pro15增强版参数_小米笔记本Pro15增强版参数介绍
- 笔记本电脑CF中烟雾头怎么调(cf笔记本电脑最佳设置)
- .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现
- .Net CLR异常简析
- 冒险日记最新装备合成图有什么
- 冒险日记断剑怎么进阶
- 冒险日记隐藏职业有哪些