유효성을 검사 할 때까지 메소드를 여러 번 실행해야하는 경우가 있습니다. 제 경우에는 bar.Name.Equals("John Doe")
과 같은 표현식이 있습니다.이 표현식이 유효성을 검사 할 때까지 실행하고 실행하려고합니다. 같은boo Foo (params [])를 메소드로 전달 인수
뭔가 :
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;
}
은 다음과 같습니다 : 그것은 당신은 아마 이런 식으로 뭔가를 찾고 있습니다
이것은 별도의 스레드에서 실행되고 있습니까? 그렇지 않으면 가치가 바뀔 기회가 없을 것입니다. –
@GeorgeDuckett 예. 그것을 언급하지 않아서 미안해. – Odys