示例#1
0
            public override void OnNext(T value)
            {
                bool isPassed;

                try
                {
                    isPassed = parent.predicate(value);
                }
                catch (Exception ex)
                {
                    try { observer.OnError(ex); }
                    finally { Dispose(); }

                    return;
                }

                if (isPassed)
                {
                    if (seenValue)
                    {
                        try { observer.OnError(new InvalidOperationException("sequence is not single")); }
                        finally { Dispose(); }

                        return;
                    }
                    else
                    {
                        seenValue = true;
                        lastValue = value;
                    }
                }
            }
示例#2
0
            public override void OnNext(T value)
            {
                bool flag;

                try
                {
                    flag = parent.predicate(value);
                }
                catch (Exception error)
                {
                    try
                    {
                        observer.OnError(error);
                    }
                    finally
                    {
                        Dispose();
                    }
                    return;
                }
                if (flag)
                {
                    if (seenValue)
                    {
                        try
                        {
                            observer.OnError(new InvalidOperationException("sequence is not single"));
                        }
                        finally
                        {
                            Dispose();
                        }
                        return;
                    }
                    seenValue = true;
                    lastValue = value;
                }
            }