public async Task TestThreshouldReset() { var reset = new ThresholdAutoResetSignal(3, 1000); reset.Set(); reset.Value.ShouldBe(false); reset.FireCount.ShouldBe(0); reset.Set(); reset.Value.ShouldBe(false); reset.FireCount.ShouldBe(0); reset.Set(); reset.Value.ShouldBe(true); reset.FireCount.ShouldBe(1); await Task.Delay(1000); reset.Value.ShouldBe(false); reset.FireCount.ShouldBe(1); }
public ServiceInfoBag(ServiceInfo service) { HasFailed = new ThresholdAutoResetSignal(3, 500);//3次错误才标记为异常状态,每500/1000/2000...恢复一次 Service = service; }