C# - Chiamata a metodo con Timeout....

lunedì 25 novembre 2013 - 15.15

yag Profilo | Junior Member

salve

ho un problema che non so come risolvere:

ho un metodo chiamiamolo Leggi();
questo metodo non scritto da me effettua un sacco di cose fra cui si collega ad uno strumento e quando questo non risponde va in blocco mi chiedevo
se esisteva un modo per impostare un Timeout e fare in modo che quando questo scade venga generata una ecezzione
qualcosa del tipo

try
{
Leggi();
}
catch(ExceptionTimeout e)
{
return -1;
}

un esempio banale.... era solo per far capire cosa dovrei ottenere....



0v3rCl0ck Profilo | Guru

quale versione del framework utilizza? Se hai a disposizione il framework 4 puoi sfruttare la classe Task, eseguendo il metodo in questione wrappato in un task e chiamando il metodo Wait che ha un overload che implementa proprio la possibilità di passare un valore di timeout:

http://msdn.microsoft.com/en-us/library/dd235606(VS.100).aspx

var task = Task.Factory.StartNew(() => Leggi()); // .net fx 4.5 // var task = Task.Run(() => Leggi()); if (!task.Wait(TimeSpan.FromSeconds(30)) throw new TimeoutException();


Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5