コード例 #1
0
        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);
        }
コード例 #2
0
 public override object Finish()
 {
     return(_accumulator?.GetValue());
 }