如何阻止用户在vb.net中移动控制台窗口

时间:2016-09-27 09:01:12

标签: vb.net console-application

我目前正在攻读计算机科学A-Level,所以应该明白如何做到这一点,因为我已经使用VB.Net一年了。但是,我开发了一个控制台应用程序,它使用threading.thread.sleep()函数来跟踪时间。到目前为止,这是我发现的最佳方式,但经过一些破坏性测试,我发现当用户快速拖动控制台时,这会减慢程序速度并导致时间错误。那么,有什么方法可以阻止用户移动控制台窗口,实际上是在vb.Net中保持控制台的位置固定?我目前正在使用Visual Studio 2015。

非常感谢, 丹

1 个答案:

答案 0 :(得分:1)

尽管可能会停止拖动窗口,但这是错误的方法。睡眠线程不是维护定时数据的准确方法。

移动窗口并不是Windows系统上唯一会降低应用程序速度并且开始干扰标准Windows体验的操作。

我假设您的代码会增加每次睡眠后的延迟量。

相反:为了保持准确性,您应该在应用程序开始计时时存储DateTime.Now的值。

dim mStartTime = DateTime.Now

然后得到相对于此的时间差异。

dim elapsedMilliseconds = (DateTime.Now - mStartTime).TotalMilliseconds

由于系统优先级/负载,所有定时器/睡眠时间都会受到定时错误的影响。这种方法可以防止这些错误累积。

从.net(你需要使用windows api)修改控制台并不容易,但是如果你使用的是winforms,那么阻止用户这样做非常简单。也许你可以改变你的申请类型。