我有一些服务器应用程序,我一直在尝试获取一些指标,所以我可以调试它们。我发现当向后滚动窗口时,我会突然从客户端获得超时。果然,移动滚动条会停止应用程序。
我可能在这里遗漏了一些有趣的东西,但我无法理解为什么在控制台窗口上移动滚动条会阻塞该线程。
重现起来非常简单:
Sub Main()
Do
Console.WriteLine(Now.ToString("O"))
System.Threading.Thread.Sleep(1000)
Loop
End Sub
运行它,与窗口的任何交互都会阻塞线程。在下面的示例中,我只是略微移动了滚动条并将其保持在原位几秒钟,然后才释放
http://www.briandrought.com/miscpics/scrollbar.png
我尝试使用Timer类型循环而不是Thread.Sleep,但出现了同样的问题。我做错了什么(不是不使用服务!)?
亲切的问候,
布赖恩
答案 0 :(得分:0)
你没有做错任何事。这就是Windows控制台应用程序的行为方式。在正常操作中,您的服务器应用程序肯定会作为无头服务运行,因此在生产中应该没有问题。