From 7600cd35771d8ac305f80b5d48954cc04d59fa49 Mon Sep 17 00:00:00 2001 From: Joes Date: Mon, 23 Sep 2024 23:16:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0=E4=B8=8A=E4=B8=80=E8=A1=8C=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E7=9A=84=E6=96=B9=E6=B3=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Misc/TextWriterExtensions.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/EasilyNET.Core/Misc/TextWriterExtensions.cs b/src/EasilyNET.Core/Misc/TextWriterExtensions.cs index b0b38314..cf173d8d 100644 --- a/src/EasilyNET.Core/Misc/TextWriterExtensions.cs +++ b/src/EasilyNET.Core/Misc/TextWriterExtensions.cs @@ -59,6 +59,36 @@ public static async Task SafeClearCurrentLine(this TextWriter _) } } + /// + /// 线程安全的清除上一行 + /// + /// + /// 使用方式: + /// + /// + /// + /// + /// + /// + /// + public static async Task SafeClearPreviousLine(this TextWriter _) + { + using (await _lock.LockAsync()) + { + ClearPreviousLine(); + } + } + + private static void ClearPreviousLine() + { + if (Console.CursorTop <= 0) return; + Console.SetCursorPosition(0, Console.CursorTop - 1); + Console.Write(new string(' ', Console.WindowWidth)); + Console.SetCursorPosition(0, Console.CursorTop - 1); + } + private static void ClearCurrentLine() { Console.SetCursorPosition(0, Console.CursorTop);