Implémentation d'un mécanisme de timeout universel en C#
Lors de l'interaction avec du code peu fiable, il est crucial de mettre en œuvre un mécanisme commun pour exécuter des blocs de code spécifiques avec des délais d'attente définis. Cette approche générale peut être appliquée à divers scénarios et améliore la robustesse du code.
L'un des principaux défis est de savoir comment mettre fin aux tâches de longue durée si elles expirent. Pour surmonter ce problème, nous utilisons un délégué enveloppé. Ce délégué transmet le thread d'exécution à une variable locale, permettant de terminer le thread si nécessaire.
Le code C# fourni contient une méthode statique CallWithTimeout
qui effectue une opération spécifiée dans un délai d'attente spécifié. En cas d'expiration, cette méthode abandonnera le thread en cours d'exécution et lèvera une exception TimeoutException
.
Exemple d'utilisation :
<code class="language-csharp">class Program { static void Main(string[] args) { // 五秒钟的方法,超时时间为六秒钟 CallWithTimeout(FiveSecondMethod, 6000); } static void FiveSecondMethod() { Thread.Sleep(5000); } }</code>
Ce code montre comment implémenter un mécanisme de délai d'attente universel en C#, permettant aux développeurs de gérer les tâches fastidieuses avec élégance et d'éviter que le code ne reste bloqué pendant l'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!