滚动控制台应用程序的滚动会挂起该线程

时间:2011-05-26 18:55:34

标签: .net vb.net console-application

我有一些服务器应用程序,我一直在尝试获取一些指标,所以我可以调试它们。我发现当向后滚动窗口时,我会突然从客户端获得超时。果然,移动滚动条会停止应用程序。

我可能在这里遗漏了一些有趣的东西,但我无法理解为什么在控制台窗口上移动滚动条会阻塞该线程。

重现起来非常简单:

Sub Main()
    Do
        Console.WriteLine(Now.ToString("O"))
        System.Threading.Thread.Sleep(1000)
    Loop
End Sub

运行它,与窗口的任何交互都会阻塞线程。在下面的示例中,我只是略微移动了滚动条并将其保持在原位几秒钟,然后才释放

image http://www.briandrought.com/miscpics/scrollbar.png

我尝试使用Timer类型循环而不是Thread.Sleep,但出现了同样的问题。我做错了什么(不是不使用服务!)?

亲切的问候,

布赖恩

1 个答案:

答案 0 :(得分:0)

你没有做错任何事。这就是Windows控制台应用程序的行为方式。在正常操作中,您的服务器应用程序肯定会作为无头服务运行,因此在生产中应该没有问题。