我目前正在开发一个屏幕保护程序启动器,但我想延迟激活屏幕保护程序一段时间,以确保鼠标位置仍处于激活它的位置,以防止意外激活。我正在考虑某种线程在执行前检查鼠标的位置x秒,这是一个明智的解决方案吗?
我不是在写一个屏幕保护程序,我已经编写了一个应用程序 当您将鼠标移动到桌面的指定角落时, 屏幕保护程序来了...我想知道如何在你的时候添加延迟 将鼠标移动到该角落以防止意外发射 屏幕保护程序
如果是这样的话?
答案 0 :(得分:4)
这样当您将鼠标移动到桌面的指定角落时,屏幕保护程序就会出现......
当鼠标到达那里时,设置一个布尔值和一个计时器。使任何鼠标操作清除布尔值 只有当计时器触发并且你的旗帜仍在那里时,继续。
换句话说,使用一个小型状态机。
答案 1 :(得分:0)
这是伪代码
var CurrentMouse = ...; // Get mouse coordinates.
ThreadPool.QueueUserWorkItem(
(s) => {
Thread.Sleep(500); // Half a second
// if (Mouse did not move)
// Launch Screen Saver
});
编辑: 注意,这并不是要调用gui层或线程锁定。在我的博客文章C# MultiThreading Using ThreadPool, Anonymous Delegates and Locks上看到这种情况的灵感,它确实显示了正确的锁定。