Ody*_*dys 5 c# invoke .net-3.5
有些方法需要多次运行才能验证.在我的情况下,有一些表达式bar.Name.Equals("John Doe"),我想运行并运行,直到此表达式验证.
就像是:
bool succeeded = TryUntillOk(bar.Name.Equals("John Doe"), 15, 100);
Run Code Online (Sandbox Code Playgroud)
哪个TryUntillOk是一个方法,运行这个表达式15次,每次调用之间的睡眠时间为100毫秒.
我读了这个类似问题的优秀答案清单,但在我的情况下,没有这个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;
}
Run Code Online (Sandbox Code Playgroud)
将调用如下:
bool succeeded = TryRepeatedly(() => bar.Name.Equals("John Doe"),
15,
TimeSpan.FromMilliseconds(100));
Run Code Online (Sandbox Code Playgroud)
这里唯一有趣的部分是你将条件指定为a Func<bool>,它是一个不带参数并返回布尔值的方法的委托.Lambda表达式语法允许您在调用站点上轻松构造此类委托.
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |