优化控制台输入模式的设置逻辑,调整输入模式恢复时机
This commit is contained in:
parent
f2719bb41d
commit
b855a18a43
|
@ -38,30 +38,17 @@ public class MusicFrom
|
|||
|
||||
public MusicFrom()
|
||||
{
|
||||
// 获取标准输入句柄
|
||||
IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||
|
||||
// 获取当前控制台输入模式
|
||||
uint mode;
|
||||
if (!GetConsoleMode(hStdin, out mode))
|
||||
{
|
||||
Console.WriteLine("无法获取控制台输入模式");
|
||||
return;
|
||||
}
|
||||
|
||||
// 禁用回显和行输入
|
||||
mode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT);
|
||||
if (!SetConsoleMode(hStdin, mode))
|
||||
{
|
||||
Console.WriteLine("无法设置控制台输入模式");
|
||||
return;
|
||||
}
|
||||
setCharArry();
|
||||
MaxY = Program.chars.GetLength(0);
|
||||
MaxX = Program.chars.GetLength(1);
|
||||
new Thread(PrintCharArray).Start();
|
||||
new Thread(KeyboardMapping).Start();
|
||||
new Thread(Run).Start();
|
||||
|
||||
// 恢复控制台输入模式
|
||||
// mode |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT;
|
||||
// SetConsoleMode(hStdin, mode);
|
||||
|
||||
}
|
||||
|
||||
public void Run()
|
||||
|
@ -127,6 +114,24 @@ public class MusicFrom
|
|||
public void PrintCharArray()
|
||||
{
|
||||
|
||||
// 获取标准输入句柄
|
||||
IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||
|
||||
// 获取当前控制台输入模式
|
||||
uint mode;
|
||||
if (!GetConsoleMode(hStdin, out mode))
|
||||
{
|
||||
Console.WriteLine("无法获取控制台输入模式");
|
||||
return;
|
||||
}
|
||||
|
||||
// 禁用回显和行输入
|
||||
mode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT);
|
||||
if (!SetConsoleMode(hStdin, mode))
|
||||
{
|
||||
Console.WriteLine("无法设置控制台输入模式");
|
||||
return;
|
||||
}
|
||||
var stopwatch = new Stopwatch();
|
||||
int frameCount = 0;
|
||||
double totalTime = 0;
|
||||
|
@ -135,7 +140,6 @@ public class MusicFrom
|
|||
var a = Program.chars.GetLength(0);
|
||||
var b = Program.chars.GetLength(1);
|
||||
var buffer = new StringBuilder();
|
||||
ConsoleColor xiantiaoColor = Program.random.Next(0, 2) == 0 ? ConsoleColor.Red : ConsoleColor.Blue;//线条的颜色
|
||||
while (Program.IsWhile)
|
||||
{
|
||||
stopwatch.Restart();
|
||||
|
@ -146,9 +150,6 @@ public class MusicFrom
|
|||
{
|
||||
for (j = 0; j < b; j++)
|
||||
{
|
||||
//Console.ForegroundColor = Program.chars[i, j].Color;
|
||||
//Console.Write($" {Program.chars[i, j].Char} ");
|
||||
|
||||
buffer.Append(Program.chars[i, j].Char);
|
||||
time++;
|
||||
if (time > 100000)
|
||||
|
@ -225,6 +226,9 @@ public class MusicFrom
|
|||
//这样闪烁不会太严重
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
// 恢复控制台输入模式
|
||||
mode |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT;
|
||||
SetConsoleMode(hStdin, mode);
|
||||
}
|
||||
private void setCharArry()
|
||||
{
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Text;
|
||||
using Debug.ModelingMusic;
|
||||
namespace Debug;
|
||||
/// <summary>
|
||||
|
|
Loading…
Reference in New Issue
Block a user