没有足够的存储空间可用于`Console.ReadLine`

时间:2015-02-17 12:56:53

标签: memory service console readline

我正在使用双服务/控制台模型来测试我的服务。聚光灯下的代码是:

static void Main(string[] args)
{
    // Seems important to use the same service instance, regardless of debug or runtime.
    var service = new HostService();
    service.EventLog.EntryWritten += EventLogEntryWritten;

    if (Environment.UserInteractive)
    {
        service.OnStart(args);
        Console.WriteLine("Host Service is running. Press any key to terminate.");
        Console.ReadLine();
        service.OnStop();
    }
    else
    {
        var servicesToRun = new ServiceBase[] { service };
        Run(servicesToRun);
    }
}

当我在调试器下运行应用程序时,使用F5,在Console.ReadLine();行上我得到一个System.IO.IOException,其中包含"没有足够的存储空间来处理此命令。&#34 ;

ReadLine的唯一目的是等到有人按下某个键才能结束该应用,因此我无法想象数据来自哪里需要这么多存储空间。

2 个答案:

答案 0 :(得分:10)

这是一项服务,其输出可能设置为Windows应用程序,将输出更改为控制台应用程序,这应该消失。

答案 1 :(得分:1)

我遇到了同样的问题,我在项目属性下找到了该设置,但是我正在创建Windows应用程序,因此无法更改应用程序类型。

这是我使用的代码。

Dim t As Task = New Task(AddressOf DownloadPageAsync)
t.Start()
Console.WriteLine("Downloading page...")
Console.ReadLine()

异步子DownloadPageAsync()

Using client As HttpClient = New HttpClient()
    Using response As HttpResponseMessage = Await client.GetAsync(page)
        Using content As HttpContent = response.Content
            ' Get contents of page as a String.
            Dim result As String = Await content.ReadAsStringAsync()
            ' If data exists, print a substring.
            If result IsNot Nothing And result.Length > 50 Then
                Console.WriteLine(result.Substring(0, 50) + "...")
            End If
        End Using
    End Using
End Using

结束子