6
votes

Passer un Bool FOO (paramètres []) comme argument de méthode

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 bar.name.name.equals ("John Doe") code> que je veux exécuter et exécuter jusqu'à ce que cette expression valide.

Quelque chose comme: p>

bool succeeded = TryUntillOk(bar.Name.Equals("John Doe"), 15, 100);


2 commentaires

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.


3 Réponses :


8
votes

Vous recherchez probablement quelque chose comme ceci:

bool succeeded = TryRepeatedly(() => bar.Name.Equals("John Doe"),
                               15,
                               TimeSpan.FromMilliseconds(100));


2 commentaires

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



0
votes

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
}  


0 commentaires

1
votes

Vous devez adapter l'invocation. @ Jon's Reshante a lafaction de Lambda, cette version sépare la comparaison du délégué xxx


1 commentaires

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.