Y a t-il essayer de verrouiller, ignorer si l'expiration de l'opération” en C#?
J'ai besoin d'essayer de se verrouiller sur un objet, et si sa déjà verrouillé juste continuer (après le temps, ou sans elle).
L'instruction C# lock bloque.
Vous devez vous connecter pour publier un commentaire.
Je crois que vous pouvez utiliser
Moniteur.TryEnter()
.L'instruction lock juste se traduit par une
Monitor.Enter()
appel et untry catch
bloc.Ed a le droit de la fonction pour vous. Il suffit de ne pas oublier d'appeler
Monitor.Exit()
. Vous devez utiliser untry-finally
bloc afin de garantir un bon nettoyage.J'ai eu le même problème, j'ai fini par la création d'une classe
TryLock
qui implémente IDisposable et utilise ensuite lausing
déclaration de contrôler la portée de l'écluse:Puis utilisez la syntaxe suivante pour verrouiller:
Vous trouverez probablement ceci pour vous-même maintenant que les autres ont pointé dans la bonne direction, mais TryEnter pouvez également prendre un paramètre de délai d'attente.
Jeff Richter "CLR Via C#" est un excellent livre sur des détails des CLR entrailles si vous êtes de plus en plus de trucs compliqués.
Envisager d'utiliser AutoResetEvent et sa méthode WaitOne avec un délai d'attente d'entrée.
Voir https://msdn.microsoft.com/en-us/library/cc189907(v=vs. 110).aspx
https://msdn.microsoft.com/en-us/library/system.threading.autoresetevent(v=vs. 110).aspx et https://msdn.microsoft.com/en-us/library/cc190477(v=vs. 110).aspx