[英]Delaying an action for a period of time
我目前正在开发一个屏幕保护程序启动器,但我想延迟激活屏幕保护程序一段时间,以确保鼠标位置仍处于激活它的位置,以防止意外激活。 我正在考虑某种线程在执行前检查鼠标位置x秒,这是一个明智的解决方案吗?
我不是在写一个屏幕保护程序,我写了一个应用程序,这样当你将鼠标移动到桌面的指定角落时,屏幕保护程序就会出现...我想知道如何在移动鼠标时添加延迟进入那个角落以防止意外启动屏幕保护程序
如果是这样的话?
这样,当您将鼠标移动到桌面的指定角落时,屏幕保护程序就会出现......
当鼠标到达那里时,设置一个布尔值和一个计时器。 使任何鼠标操作清除布尔值。
只有当计时器触发并且你的旗帜仍在那里时,继续。
换句话说,使用一个小状态机。
这是伪代码
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使用ThreadPool,匿名代表和锁定”中看到了这种情况的灵感,它确实显示了正确的锁定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.