2011-12-27 3 views
5

В настоящее время я работаю над заставкой для заставки, но я хочу отложить активацию заставки в течение определенного периода времени, чтобы положение мыши все еще было в состоянии ее активировать, чтобы предотвратить случайную активацию. Я думаю, что какой-то поток проверяет положение мыши на x секунд до ее выполнения, будет ли это разумным решением?Задержка действия за период времени

Я не пишу заставку, я написал заявление, так что при перемещении мыши в назначенный углу рабочего стола, то заставка приходит ... Я хочу знать, как добавить задержка, когда вы переместить мышь в этот угол, чтобы предотвратить случайный запуск в скринсейвера

Если да, то как?

+0

Существует API для управления Заставкой. Вы об этом говорите? –

+0

Написание собственного приложения типа «Горячие углы» с использованием крючков для мыши низкого уровня. У меня есть все, что работает, просто ищу способ замедлить запуск заставки, когда мышь находится в «зоне активации» – CybrHwk

+2

Нет, экранная заставка, обращая внимание на положение мыши, не имеет никакого смысла. Он не должен * активироваться *, когда человек перемещает его. Подумайте об этом немного. –

ответ

4

так, что при перемещении мыши в назначенный углу рабочего стола, заставки приходит на ...

Когда мышь попадает туда, установить логическое и таймер. Сделайте любое действие мыши очистите логическое значение.
Только когда срабатывает таймер, и ваш флаг все еще там, продолжайте.

Другими словами, используйте небольшую государственную машину.

+3

+1 для «не используйте нить для этого» – dthorpe

+0

Пошел для этого решения, работает, спасибо за вашу помощь :) – CybrHwk

0

Вот псевдокод

var CurrentMouse = ...; // Get mouse coordinates. 
    ThreadPool.QueueUserWorkItem(  
    (s) => { 
      Thread.Sleep(500); // Half a second 

     // if (Mouse did not move) 
     //  Launch Screen Saver 

    }); 

EDIT: Примечание это не говорит с вызовом графического интерфейса обратно в слой или нити блокировки. См. Вдохновение для этой ситуации в моей статье в блоге под названием C# MultiThreading Using ThreadPool, Anonymous Delegates and Locks, которая показывает правильную блокировку.

+0

Другой не очень релевантный ответ, который имеет ссылку на ваш блог. –

Смежные вопросы