internal Func <object> GetResourceDeferred(Guid id, Lazy <SecurityToken> token) { Contract.Requires(token != null); Contract.Ensures(Contract.Result <Func <object> >() != null); var gotValue = _accumulator.GetValue(id); Func <object> factory = () => { if (token.Value.CanRead) { SpinWait.SpinUntil(() => _pendingUpdatesCount == 0); var res = gotValue(); return(res); } return(null); }; return(factory); }
public override object Finish() { return(_accumulator?.GetValue()); }