Ich suchte nach dem besten Ansatz, um herauszufinden, ob meine Benutzer in meiner WPF-Anwendung inaktiv sind. Derzeit nutze ich diese Leerlaufzeit vom Betriebssystem, und wenn sie die Anwendung minimieren und im Internet suchen, gibt es einen Prozess im Betriebssystem, weshalb das Betriebssystem dies nicht als Inaktivitätszeit betrachtet, obwohl sie dies nicht tun alles in der Anwendung. Ich würde jedoch gerne herausfinden, ob sie in meiner Anwendung nicht geklickt oder etwas getan haben.
So kann ich jetzt im Leerlauf die Zeit verbringen.
%Vor%Siehe diese Antwort: Application.Idle-Ereignis, das in der WPF-Anwendung nicht ausgelöst wird
>ComponentDispatcher.ThreadIdle ist das Ereignis, nach dem Sie suchen.
Wie wäre es mit dem Abonnieren von SENS -Ereignissen?
Hier ist ein weiterer Link .
Für solche Szenarien benötigen wir ein Timer
, das einige event
nach einem timeinterval
zurückfeuert.
Und am wichtigsten ist, dass wir ein callback / eventhandler
benötigen, das jedes Mal aufgerufen wird, wenn irgendeine Aktivität irgendeiner Art in unserer Anwendung passiert, so dass wir wissen, dass unsere Anwendung running
ist.
Punkt 1 kann mit DispatcherTimer
behandelt werden.
Punkt 2 kann mit public event CanExecuteRoutedEventHandler CanExecute;
behandelt werden.
Alles zusammensetzen:
MainWindow.xaml
%Vor%xmlns: cmd="clr-namespace: System.Windows.Input; assembly = Presentationcore "
MainWindow.xaml.cs
%Vor%Wir können diesen Ansatz leicht auf unsere Bedürfnisse ausweiten.