延迟一段时间的动作

时间:2011-12-27 23:08:53

标签: c# multithreading timeout delay execution

我目前正在开发一个屏幕保护程序启动器,但我想延迟激活屏幕保护程序一段时间,以确保鼠标位置仍处于激活它的位置,以防止意外激活。我正在考虑某种线程在执行前检查鼠标的位置x秒,这是一个明智的解决方案吗?

  

我不是在写一个屏幕保护程序,我已经编写了一个应用程序   当您将鼠标移动到桌面的指定角落时,   屏幕保护程序来了...我想知道如何在你的时候添加延迟   将鼠标移动到该角落以防止意外发射   屏幕保护程序

如果是这样的话?

2 个答案:

答案 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上看到这种情况的灵感,它确实显示了正确的锁定。