कई बार एक विधि को मान्य होने तक कई बार चलाने की आवश्यकता होती है। मेरे मामले में bar.Name.Equals("John Doe")
जैसे भाव हैं जो मैं इस अभिव्यक्ति को मान्य होने तक चलाने और चलाने के लिए चाहता हूं।विधि के रूप में एक बूल फू (पैराम्स []) पास करें तर्क
कुछ की तरह:
bool succeeded = TryUntillOk(bar.Name.Equals("John Doe"), 15, 100);
जहां TryUntillOk
एक विधि है कि प्रत्येक कॉल के बीच 100ms के एक नींद के साथ इस अभिव्यक्ति 15 बार चलाता होगा।
मैंने इसी समस्या के उत्तर की excelent सूची पढ़ी लेकिन मेरे मामले में कोई स्टैंडर प्रतिनिधि नहीं है कि यह TryUntillOk
विधि स्वीकार करेगी।
प्रश्न का शीर्षक रचनात्मक नहीं है।
bool TryRepeatedly(Func<bool> condition, int maxRepeats, TimeSpan repeatInterval)
{
for (var i = 0; i < maxRepeats; ++i)
{
if (condition()) return true;
Thread.Sleep(repeatInterval); // or your choice of waiting mechanism
}
return false;
}
कौन सा रूप में लागू किया जाएगा इस प्रकार है:: संपादित करने के लिए यह :)
क्या यह एक अलग थ्रेड में चल रहा होगा? अन्यथा मूल्य बदलने के लिए कोई मौका नहीं होने वाला है। –
@ जॉर्ज डकेट यस। इसका जिक्र करने के लिए खेद है। – Odys