My Blog

Timeout sull'esecuzione di un metodo in .NET

by lupok on domenica 11 novembre 2012 10:18

Un semplice esempio che mostra come è possibile chiamare un metodo e fare in modo che il tempo di esecuzione ad esso dedicato sia limitato da un time-out entro il quale deve aver terminato la propria esecuzione.

 private void callMethodTimeout(int timeout)
      {
         Thread t = new Thread(delegate()
            {
               try
               {
                  // thread execution 
                  Thread.Sleep(2000);
               }
               catch(ThreadAbortException)
               { 
                  //thread aborted
               }
            });
         t.Start();
         if (!t.Join(timeout))
            t.Abort();
      }


Le poche righe di codice mostrate sopra indicano come è possibile limitare il tempo di esecuzione di un metodo attraverso un thread che esegue le elaborazioni richieste (simulate per esempio da uno sleep), limitato termporalmente mediante un join che blocca il codice per il tempo indicato nel timeout e ritorna un valore (true) solo se l'esecuzione del thread termina prima della scadenza imposta dal timeout.
Nel caso che entro il tempo stabilito il thread non sia terminato, il thread viene abortito e il metodo ritorna al codice chiamante.

 

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags