延迟:将一项行动推迟一段时间

本文关键字:一项 推迟 一段时间 延迟 | 更新日期: 2023-09-27 18:18:50

我目前正在制作一个屏幕保护程序启动器,但是我想延迟屏幕保护程序的激活一段时间,以确保鼠标位置仍在激活它的位置,以防止意外激活。我在想某种线程检查鼠标的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#多线程使用ThreadPool,匿名委托和锁》中可以看到这种情况的灵感