Il y a des moments où une méthode doit être exécutée plusieurs fois jusqu'à sa validation. Dans mon cas, il existe des expressions telles que Quelque chose comme: p> bar.name.name.equals ("John Doe") code> que je veux exécuter et exécuter jusqu'à ce que cette expression valide.
bool succeeded = TryUntillOk(bar.Name.Equals("John Doe"), 15, 100);
3 Réponses :
Vous recherchez probablement quelque chose comme ceci:
bool succeeded = TryRepeatedly(() => bar.Name.Equals("John Doe"), 15, TimeSpan.FromMilliseconds(100));
Il convient probablement de noter que cela s'appuie sur quelque chose d'externe (thread séparé, etc.), entraînant éventuellement la condition d'évaluer à vrai.
@Georgguckett désolé de ne pas mentionner cela. Tout cela serait fait dans les threads de travailleurs
Vous pouvez vérifier
delegate void d_name(string s); d_name obj =new d_name(bar.Name.Equals); bool succeeded = TryUntillOk(obj("John Doe"), 15, 100); TryUntillOk(obj d,type parameter2,type parameter3 ) { //do your work }
Vous devez adapter l'invocation. @ Jon's Reshante a lafaction de Lambda, cette version sépare la comparaison du délégué
Exactement c'était ma première tentative. Plus tard, j'ai réalisé qu'il pourrait y avoir plusieurs méthodes à appeler, ce qui signifie que je devais déclarer tant de délégués que je veux éviter.
Est-ce que cela fonctionnerait dans un fil séparé? Sinon, il n'ya aucune chance de changer la valeur.
@Georgguckett Oui. Désolé de ne pas le mentionner.