Application.Idle

martedì 27 gennaio 2009 - 01.09

jtpsala Profilo | Senior Member

Un saluto a tutti gli utenti di questo Forum.

Sto realizzando un applicativo in VB2008 e volevo implementare una funzione che controlli se l'applicazione rimane inattiva per x minuti mostri un un messaggio.
Ho letto qualcosa sulla classe Application.Idle ma nonostante le prove non sono riuscito a combinare nulla.
Pensavo di mettere un timer che se c'è attività sulla form si resettava altrimenti raggiunto gli x minuti faceva apparire il messaggio.

Ovviamente deve controllare che non ci sia movimento ne del mouse ne sulla tastiera.

Ringrazio tutti in anticipo.

Jeremy Profilo | Guru

Ti basterebbe controllare l'evento mousemove del form e l'evento keydown del form, poi, come hai detto tu, implementi un controllo con il timer al quale scadere del tempo mostri il messaggio che vuoi....(se riguarda il form)
Se invece riguarda tutta l'applicazione...ti consiglio di inserire i tuo form sempre all'interno di un mdiparent all'interno del quale mostri le tue form....in quel caso sposti il controllo sul mdiparent....
Non credo ci siano grosse difficoltà....comunque se hai problemi....Facci sapere....

Ciao

jtpsala Profilo | Senior Member

Grazie per avermi risposto.
In modo molto grezzo ci sono riuscito a risolvere il problema ma mi chiedevo come si sfrutta la classe Application.Idle?
Grazie in anticipo.

Anonimo Profilo | Senior Member

Da come viene descritto su msdn quell'evento non fa al caso tuo

Anche io ho avuto a che fare con un problema del genere, ovvero gestire l'inattività dell'applicazione per un certo tempo e ho optato per utilizzare un timer.
Nella fattispecie mi sono scritto un piccolo wrapper per la classe System.Threading.Timer. Se ti può interessare ti metto il codice.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come puoi vedere in questo modo hai direttamente dei metodi per avviarlo, fermarlo e riavviarlo

Ciao

Riccardo

jtpsala Profilo | Senior Member

Grazie per la risposta. Era propio questo quello che volevo realizzare.
Una sola cortesia ti chiedo: in codice convertito in VB2008 non mi funziona!
Potresti cortesemente dargli un'occhiata?

Grazie ancora in anticipo.

Anonimo Profilo | Senior Member

Metti il codice che gli do un occhio
Riccardo

jtpsala Profilo | Senior Member

Eccolo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie ancora.

Anonimo Profilo | Senior Member

Ti ho fatto un piccolo esempio, lo trovi allegato


Riccardo

jtpsala Profilo | Senior Member

Ti ringrazio per l'esempio, però il timer non si riavvia se c'è attività sull'applicazione.
Come si potrebbe gestire ciò?
ad esempio i sistemi operativi: se non trovano attività ne di mouse ne di tastiera si avvia lo screansaver.

Hai qualche idea?

Ti ringrazio ancora.

Anonimo Profilo | Senior Member

Come ti è stato suggerito qualche post in su basta che gestisci il riavvio del timer attraverso gli eventi mousemove e keydown del form
Riccardo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5