我目前正在攻读计算机科学A-Level,所以应该明白如何做到这一点,因为我已经使用VB.Net一年了。但是,我开发了一个控制台应用程序,它使用threading.thread.sleep()函数来跟踪时间。到目前为止,这是我发现的最佳方式,但经过一些破坏性测试,我发现当用户快速拖动控制台时,这会减慢程序速度并导致时间错误。那么,有什么方法可以阻止用户移动控制台窗口,实际上是在vb.Net中保持控制台的位置固定?我目前正在使用Visual Studio 2015。
非常感谢, 丹
答案 0 :(得分:1)
尽管可能会停止拖动窗口,但这是错误的方法。睡眠线程不是维护定时数据的准确方法。
移动窗口并不是Windows系统上唯一会降低应用程序速度并且开始干扰标准Windows体验的操作。
我假设您的代码会增加每次睡眠后的延迟量。
相反:为了保持准确性,您应该在应用程序开始计时时存储DateTime.Now的值。
dim mStartTime = DateTime.Now
然后得到相对于此的时间差异。
dim elapsedMilliseconds = (DateTime.Now - mStartTime).TotalMilliseconds
由于系统优先级/负载,所有定时器/睡眠时间都会受到定时错误的影响。这种方法可以防止这些错误累积。
从.net(你需要使用windows api)修改控制台并不容易,但是如果你使用的是winforms,那么阻止用户这样做非常简单。也许你可以改变你的申请类型。