Je tente désespérément d'implémenter un «délai d'inactivité de session» pour une stratégie de sécurité informatique. sss Cependant, ma logique de réinitialisation d'inactivité ne se déclenche pas. Qu'est-ce que je fais mal? Je ne peux pas joindre un point d'arrêt en raison de l'écrasement de Visual Studio lors de la connexion au binaire Silverlight. Je me demande si le problème est quelque chose de très subtil, comme au moment où le constructeur App est appelé, il n'y a pas encore "Current RootVisual". Marquage aveC#WPF également puisque #Silverlight est mort/obsolète. Exemple de code ci-dessous.Gestionnaire d'événements Silverlight Global Mouse Down
namespace TestApp
{
public partial class App : Application
{
System.Windows.Threading.DispatcherTimer sessionTimer = new System.Windows.Threading.DispatcherTimer();
public App()
{
ResetSessionTimer();
this.RootVisual.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(rootVisual_MouseLeftButtonDown), true);
//this.RootVisual.MouseLeftButtonDown += rootVisual_MouseLeftButtonDown;
InitializeComponent();
}
private void ResetSessionTimer()
{
sessionTimer.Stop();
sessionTimer.Tick -= sessionTimer_Tick;
sessionTimer = new System.Windows.Threading.DispatcherTimer();
sessionTimer.Interval = TimeSpan.FromMinutes(1);
sessionTimer.Tick += sessionTimer_Tick;
sessionTimer.Start();
}
private void sessionTimer_Tick(object sender, EventArgs e)
{
System.Windows.Browser.HtmlPage.Document.GetElementById("LogoutButton").Invoke("click", null);
}
private void rootVisual_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// added this alert to see if code is even firing.
System.Windows.Browser.HtmlPage.Window.Invoke("alert", "hello, world");
ResetSessionTimer();
e.Handled = false;
}
}
}