问题描述
||
我已经尝试了一些服务器应用程序,以便从中获取一些指标,以便可以调试它们。我发现当向上滚动窗口时,我突然从客户端获得超时。果然,移动滚动条停止了该应用程序。
我可能在这里缺少一些基本知识,但是我无法弄清楚为什么在“控制台”窗口上移动滚动条会阻塞线程。
复制非常简单:
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进行了尝试,但是出现了同样的问题。我在做什么错(除了不使用服务之外!)?
亲切的问候,
布赖恩
解决方法
您没有做错任何事情。这就是Windows控制台应用程序的行为方式。在正常操作中,您的服务器应用程序肯定会作为无头服务运行,因此在生产中应该没有问题。