Fermare l’esecuzione di un programma C#



A volte può essere necessario fermare l’esecuzione di un programma per un determinato tempo.

Ad esempio, dovendo gestire un tipico ciclo da videogame, cioè:

while (true)
{
//Svolgimento di azioni di gioco di esempio...
player.Move();
enemy.Move();
player.Attack();
enemy.Attack();
if (enemy.Life == 0)
break;
}

Il programma va in loop come si vuole che vada, ma poi ci si accorge di non riuscire a gestire il gioco, dato che verrà utilizzato in pratica il 100% della cpu, con il risultato di bloccare l’intero sistema.

Per evitare situazioni analoghe, appunto, basta fermare l’esecuzione del programma per un brevissimo tempo, non percepibile dall’utente che sta giocando, ad esempio 10 millisecondi sono più che sufficienti di norma.

Per fare questo in C# si può usare il metodo Sleep(int milliseconds) della classe Thread, mappata nel namespace System.Threading.

Il codice su riportato, quindi, può funzionare tranquillamente con l’aggiunta di questo metodo in fondo alle azioni, vediamo:

while (true)
{
//Svolgimento di azioni di gioco di esempio...
player.Move();
enemy.Move();
player.Attack();
enemy.Attack();
if (enemy.Life == 0)
break;
System.Threading.Thread.Sleep(10);
}

In questo modo il sistema con i 10 millisecondi “liberi” non sfrutterà continuamente la CPU non causando quindi il crash del sistema.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest