Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net控制台应用程序在连续打印大量字符时停止响应_C#_.net_Console Application - Fatal编程技术网

C# .net控制台应用程序在连续打印大量字符时停止响应

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) {

我试图弄明白,当我要求正在运行的程序向控制台输出大量字符时,为什么它会进入“无响应”模式

我试着创建一个只打印字符的小示例,在大约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)
{
对于(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));
        }
    }
}