C# .net控制台应用程序在连续打印大量字符时停止响应
我试图弄明白,当我要求正在运行的程序向控制台输出大量字符时,为什么它会进入“无响应”模式 我试着创建一个只打印字符的小示例,在大约10-20秒后,它也会在我身上“没有响应”:C# .net控制台应用程序在连续打印大量字符时停止响应,c#,.net,console-application,C#,.net,Console Application,我试图弄明白,当我要求正在运行的程序向控制台输出大量字符时,为什么它会进入“无响应”模式 我试着创建一个只打印字符的小示例,在大约10-20秒后,它也会在我身上“没有响应”: static void Main(string[] args) { for (int i = 0; i < 255; i = (i+1) % 255) { Console.Write(((char)i)); } } static void Main(字符串[]args) {
static void Main(string[] args)
{
for (int i = 0; i < 255; i = (i+1) % 255)
{
Console.Write(((char)i));
}
}
static void Main(字符串[]args)
{
对于(int i=0;i<255;i=(i+1)%255)
{
Console.Write(((char)i));
}
}
程序仍在运行,即使控制台窗口“没有响应”,我仍然可以暂停调试器并继续它,但控制台窗口已损坏
问题是,控制台不介意吐出无数整数:
static void Main(string[] args)
{
for (int i = 0; i < 255; i = (i+1) % 255)
{
Console.Write(i);
}
}
static void Main(字符串[]args)
{
对于(int i=0;i<255;i=(i+1)%255)
{
控制台。写入(i);
}
}
任何想法都很受欢迎。谢谢 当您将其强制转换为角色时,您还将控制字符发送到控制台,以获得一些较低的
i
值。我猜它与反复输出一些控制字符有关。它会发出很多胡言乱语(并且会发出很多嘟嘟声,除非你掩盖了字符7,这是一个铃铛),但它对我来说永远不会没有反应
这将取决于您的控制台如何处理控制字符-您使用的是哪个控制台,在哪个操作系统上,使用哪种语言
此外,为什么要将无法打印的字符发送到控制台?如果将循环保持为ASCII(32-126),会发生什么?例如:
using System;
class Test
{
static void Main(string[] args)
{
int i=32;
while (true)
{
Console.Write((char)i);
i++;
if (i == 127)
{
i = 32;
}
}
}
}
那还表现出同样的行为吗
您提到调试器-如果您在调试器之外运行,是否会得到相同的行为?(到目前为止,我只在命令行中进行了测试。)作为旁白,您可以在常规cmd.exe控制台上运行Windows 7(美国,以丹麦语作为区域),在visual studio中和外部忽略它。不过,您的示例运行良好,在修改为包含0-255但不包括7之后,“我的控制台”继续打印字符,没有问题。所以我猜是哔哔声杀死了它。谢谢你的意见。
using System;
class Test
{
static void Main(string[] args)
{
for(var i=0;;i=(i+1) % 126)
{
Console.Write((char)(i+32));
}
}
}