コード例 #1
0
        public static ReadOnlyDictionaryRangeActiveExpression <TKey, TValue, TResult> Create(IReadOnlyDictionary <TKey, TValue> source, Expression <Func <TKey, TValue, TResult> > expression, ActiveExpressionOptions?options = null)
        {
            ReadOnlyDictionaryRangeActiveExpression <TKey, TValue, TResult> rangeActiveExpression;
            bool monitorCreated;
            var  key = new RangeActiveExpressionsKey(source, expression, options);

            lock (rangeActiveExpressionsAccess)
            {
                if (monitorCreated = !rangeActiveExpressions.TryGetValue(key, out rangeActiveExpression))
                {
                    rangeActiveExpression = new ReadOnlyDictionaryRangeActiveExpression <TKey, TValue, TResult>(source, expression, options, key);
                    rangeActiveExpressions.Add(key, rangeActiveExpression);
                }
                ++rangeActiveExpression.disposalCount;
            }
            if (monitorCreated)
            {
                rangeActiveExpression.Initialize();
            }
            return(rangeActiveExpression);
        }
コード例 #2
0
 ReadOnlyDictionaryRangeActiveExpression(IReadOnlyDictionary <TKey, TValue> source, Expression <Func <TKey, TValue, TResult> > expression, ActiveExpressionOptions?options, RangeActiveExpressionsKey rangeActiveExpressionsKey)
 {
     this.source     = source;
     this.expression = expression;
     Options         = options;
     this.rangeActiveExpressionsKey = rangeActiveExpressionsKey;
     activeExpressions = this.source.CreateSimilarDictionary <TKey, TValue, IActiveExpression <TKey, TValue, TResult> >();
 }