Whait di 3 secondi

mercoledì 10 settembre 2008 - 16.51

Luka90 Profilo | Junior Member

Ciao a tutti!

Nel mio programma devo fare un "whait" di 3 secondi.
Il problema è che clickkando un pulsante mi mostra un'immagine ed è necessario che questa resti visibile per un tempo minimo necessario a vederla, quantificato in 3 secondi.

Ora, devo per forza utilizzare un timer e sfruttare il suo evento?

Grazie a tutti
Luca

aiedail92 Profilo | Expert

Ciao

Se vuoi che l'applicazione risponda, puoi usare un timer (strada semplice) o un thread separato (strada complessa). Se vuoi semplificare ancora di più le cose invece puoi usare il metodo Thread.Sleep(3000) che "addormenta" il thread per 3000 millisecondi (3 secondi), ma l'applicazione potrebbe essere segnalata come non rispondente.

Luca

Luka90 Profilo | Junior Member

Ah, chiaro

Allora mi rassegnerò ad usare il timer, eviterei che il sistema rompesse le bolle

Grazie!
Luca

xe Profilo | Newbie

la sospensione del thread non comporta lo status di applicazione non responsiva.
l'uso di un thread separato comporta le problematiche di acecsso sicuro agli oggetti della tua form, per ovviare a questo dovresti usare una delegate al codice per rimuovere l'immagine residente nel thread principale della tua form, magari passandola come parametro di callback ad un Thread.Timer che di crei al volo, evitando di impegolarti con gli ogetti timer della tua form e la gestione dell'evento.
Deligere oportet quem velis diligere

Luka90 Profilo | Junior Member

L'uso dei thread è stato l'ultimo argomento trattato dal mio professore e troppo superficialmente. Non ho ancora avuto modo di approfondirlo e questa è una grave vacanza che cercherò di colmare al più presto.

Grazie delle informazioni, l'utilità è ovvia
Luca

aiedail92 Profilo | Expert

>la sospensione del thread non comporta lo status di applicazione non responsiva.

Windows cataloga una finestra come non responsiva dopo che non elabora più i messaggi per un certo lasso di tempo (che a quanto pare varia da un S/O all'altro) In tal caso nasconde la finestra interessata e la sostituisce con una finestra "fantasma" avente le stesse dimensioni e gli stessi stili, e aggiunge al titolo il testo "(Non risponde)". Ora, poichè col metodo Thread.Sleep si va a bloccare completamente il thread chiamante, la finestra smetterà anche di elaborare i messaggi, e dopo poco non risponderà più. Questo può non accadere su sistemi operativi nuovi, come XP o Vista, in fondo 3 secondi non sono molti, ma su S/O un po' più datati, come Windows ME o '98, il blocco è pratcamente certo.

Per verificare "sleeppa" il thread per 15 secondi anzichè 3, e prova a clickare sulla finestra ripetutamente (azione molto effettuata sugli Splash Screen), il risultato dovrebbe essere quello "cercato"

Luca
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