Inatividade e atividade do WPF

Estou tentando lidar com a inatividade e a atividade do usuário em um aplicativo WPF para desvanecer algumas coisas. Depois de muita pesquisa, decidi seguir a (pelo menos na minha opinião) solução muito elegante que Hans Passant postouaqui.

Há apenas uma desvantagem: enquanto o cursor permanecer em cima da janela, oPreProcessInput evento é continuamente disparado. Estou tendo um aplicativo de tela cheia, então isso o mata. Qualquer idéia de como eu posso contornar esse comportamento seria muito apreciada.

public partial class MainWindow : Window
{
    readonly DispatcherTimer activityTimer;

    public MainWindow()
    {
        InitializeComponent();

        InputManager.Current.PreProcessInput += Activity;

        activityTimer = new DispatcherTimer
        {
            Interval = TimeSpan.FromSeconds(10),
            IsEnabled = true
        };
        activityTimer.Tick += Inactivity;
    }

    void Inactivity(object sender, EventArgs e)
    {
        rectangle1.Visibility = Visibility.Hidden; // Update
        // Console.WriteLine("INACTIVE " + DateTime.Now.Ticks);
    }

    void Activity(object sender, PreProcessInputEventArgs e)
    {
        rectangle1.Visibility = Visibility.Visible; // Update
        // Console.WriteLine("ACTIVE " + DateTime.Now.Ticks);

        activityTimer.Stop();
        activityTimer.Start();
    }
}

Atualizar

Eu poderia restringir melhor o comportamento descrito (consulte orectangle1.Visibility atualização no código acima). Enquanto o cursor estiver sobre a janela e, por exemplo, oVisibility de um controle é alterado, oPreProcessInput é criado. Talvez eu esteja entendendo mal o propósito doPreProcessInput evento e quando é acionado. O MSDN não foi muito útil aqui.

questionAnswers(4)

yourAnswerToTheQuestion