Интерфейс ISubject<TSource, TResult>
Представляет объект, который является как наблюдаемой последовательностью, так и наблюдателем.
пространство имен :System.Reactive.Темы
сборка : System.Reactive (в System.Reactive.dll)
Синтаксис
'Declaration
Public Interface ISubject(Of In TSource, Out TResult) _
Inherits IObserver(Of TSource), IObservable(Of TResult)
'Usage
Dim instance As ISubject(Of In TSource, Out TResult)
public interface ISubject<in TSource, out TResult> : IObserver<TSource>,
IObservable<TResult>
generic<typename TSource, typename TResult>
public interface class ISubject : IObserver<TSource>,
IObservable<TResult>
type ISubject<'TSource, 'TResult> =
interface
interface IObserver<'TSource>
interface IObservable<'TResult>
end
JScript does not support generic types and methods.
Параметры типа
inTSource
Тип источника.Этот параметр типа является контравариантным. То есть можно использовать указанный тип или любой тип, который является менее производным. Дополнительные сведения о ковариации и контравариации см. в .
outTResult
Тип результата.Этот параметр типа является ковариантным. То есть можно использовать указанный тип или любой тип, который является более производным. Дополнительные сведения о ковариации и контравариации см. в .
Тип ISubject<TSource, TResult> предоставляет следующие элементы.
Методика
Имя | Описание | |
---|---|---|
![]() |
OnCompleted | (Наследуется от IObserver<TSource>.) |
![]() |
OnError | (Наследуется от IObserver<TSource>.) |
![]() |
OnNext | (Наследуется от IObserver<TSource>.) |
![]() |
подписка | (Наследуется от IObservable<TResult>.) |
Вверх
Методы расширения
Имя | Описание | |
---|---|---|
![]() |
Агрегатные<TResult>(Func<TResult, TResult, TResult>) | Перегруженные. Применяет функцию аккумулятора к наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
Агрегатные<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) | Перегруженные. Применяет функцию аккумулятора к наблюдаемой последовательности с указанным начальным значением. (Определяется наблюдаемым.) |
![]() |
Все<TResult> | Определяет, соответствуют ли все элементы наблюдаемой последовательности условию. (Определяется наблюдаемым.) |
![]() |
Amb<TResult> | Распространяет наблюдаемую последовательность, которая реагирует сначала с указанной первой и второй последовательностью. (Определяется наблюдаемым.) |
![]() |
И<TResult, TRight> | Совпадает, если обе наблюдаемые последовательности имеют доступное значение. (Определяется наблюдаемым.) |
![]() |
любой<TResult>() | Перегруженные. Определяет, содержит ли наблюдаемая последовательность любые элементы. (Определяется наблюдаемым.) |
![]() |
Любой<TResult>(Func<TResult, Boolean>) | Перегруженные. Определяет, соответствуют ли все элементы наблюдаемой последовательности условию. (Определяется наблюдаемым.) |
![]() |
AsObservable<TResult> | Скрывает удостоверение наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
AsObserver<TSource> | Скрывает удостоверение наблюдателя. (Определяется наблюдателя.) |
![]() |
AsQbservable<TResult> | Преобразует наблюдаемую последовательность в запрашиваемую наблюдаемую последовательность. (Определяется Qbservable.) |
![]() |
AssertEqual<TResult> | (Определяется расширениями .) |
![]() |
буфер<TResult>(Int32) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в последовательные не перекрывающиеся буферы, создаваемые на основе сведений о количестве элементов. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в последовательные не перекрывающиеся буферы, создаваемые на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(Int32, Int32) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в ноль или больше буферов, создаваемых на основе сведений о количестве элементов. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan, IScheduler) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в последовательные не перекрывающиеся буферы, создаваемые на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan, TimeSpan) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности на ноль или больше буферов, создаваемых на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan, Int32) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в буфер, отправляемый при заполнении или заданном времени. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan, TimeSpan, IScheduler) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности на ноль или больше буферов, создаваемых на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
буфер<TResult>(TimeSpan, Int32, IScheduler) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в буфер, отправляемый при заполнении или заданном времени. (Определяется наблюдаемым.) |
![]() |
Буфер<TResult, TBufferClosing>(Func<IObservable<TBufferClosing>>) | Перегруженные. Указывает каждый элемент наблюдаемой последовательности в последовательные не перекрывающиеся буферы. (Определяется наблюдаемым.) |
![]() |
буфер<TResult, TBufferOpening, TBufferClosing>(IObservable<TBufferOpening>, Func<TBufferOpening, IObservable<TBufferClosing>>) | Перегруженные. Указывает каждый элемент запрашиваемой наблюдаемой последовательности в последовательные не перекрывающиеся буферы. (Определяется наблюдаемым.) |
![]() |
Catch<TResult>(IObservable<TResult>) | Перегруженные. Продолжает наблюдаемую последовательность, которая завершается исключением со следующей наблюдаемой последовательностью. (Определяется наблюдаемым.) |
![]() |
Catch<TResult, TException>(Func<TException, IObservable<TResult>>) | Перегруженные. Продолжает наблюдаемую последовательность, которая завершается исключением указанного типа с наблюдаемой последовательностью, созданной обработчиком. (Определяется наблюдаемым.) |
![]() |
CombineLatest<TResult, TSecond, TResult> | Объединяет две наблюдаемые последовательности в одну наблюдаемую последовательность с помощью функции селектора всякий раз, когда одна из наблюдаемых последовательностей создает элемент. (Определяется наблюдаемым.) |
![]() |
Конката<TResult> | Объединяет две наблюдаемые последовательности. (Определяется наблюдаемым.) |
![]() |
содержит<TResult>(TResult) | Перегруженные. Определяет, содержит ли наблюдаемая последовательность указанный элемент с помощью средства сравнения равенства по умолчанию. (Определяется наблюдаемым.) |
![]() |
Содержит<TResult>(TResult, IEqualityComparer<TResult>) | Перегруженные. Определяет, содержит ли наблюдаемая последовательность указанный элемент с помощью указанного объекта System.Collections.Generic.IEqualityComparer< T>. (Определяется наблюдаемым.) |
![]() |
счетчик<TResult> | Возвращает Int32, представляющую общее количество элементов в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
DefaultIfEmpty<TResult>() | Перегруженные. Возвращает элементы указанной последовательности или значение параметра типа по умолчанию в однотонной последовательности, если последовательность пуста. (Определяется наблюдаемым.) |
![]() |
defaultIfEmpty<TResult>(TResult) | Перегруженные. Возвращает элементы указанной последовательности или значение параметра типа по умолчанию в однотонной последовательности, если последовательность пуста. (Определяется наблюдаемым.) |
![]() |
задержки<TResult>(timeSpan) | Перегруженные. Указывает наблюдаемую последовательность по времени с указанным источником и dueTime. (Определяется наблюдаемым.) |
![]() |
задержка<TResult>(DateTimeOffset) | Перегруженные. Указывает наблюдаемую последовательность по времени с указанным источником и dueTime. (Определяется наблюдаемым.) |
![]() |
Задержка<TResult>(TimeSpan, IScheduler) | Перегруженные. Указывает наблюдаемую последовательность по времени выполнения с указанным источником, dueTime и планировщиком. (Определяется наблюдаемым.) |
![]() |
задержка<TResult>(DateTimeOffset, IScheduler) | Перегруженные. Указывает наблюдаемую последовательность по времени выполнения с указанным источником, dueTime и планировщиком. (Определяется наблюдаемым.) |
![]() |
<TResult>() | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные элементы с указанным источником. (Определяется наблюдаемым.) |
![]() |
<TResult>(IEqualityComparer<TResult>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные элементы в соответствии с компратером. (Определяется наблюдаемым.) |
![]() |
Уникальные<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные элементы в соответствии с ключомSelector. (Определяется наблюдаемым.) |
![]() |
Distinct<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные элементы в соответствии с ключомSelector. (Определяется наблюдаемым.) |
![]() |
DistinctUntilChanged<TResult>() | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные смежные элементы с указанным источником. (Определяется наблюдаемым.) |
![]() |
DistinctUntilChanged<TResult>(IEqualityComparer<TResult>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные смежные элементы в соответствии с сравнивателем. (Определяется наблюдаемым.) |
![]() |
DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую только отдельные смежные элементы в соответствии с ключом. (Определяется наблюдаемым.) |
![]() |
DistinctUntilChanged<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Перегруженные. Возвращает наблюдаемую последовательность, которая содержит только отдельные смежные элементы в соответствии с ключомSelector и компратором. (Определяется наблюдаемым.) |
![]() |
<TResult>(действие<TResult>) | Перегруженные. Вызывает действие для каждого элемента в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
<TResult>(IObserver<TResult>) | Перегруженные. Вызывает действие для каждого элемента в наблюдаемой последовательности и вызывает действие при исключительном завершении наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
<TResult>(действие<TResult>, действие) | Перегруженные. Вызывает действие для каждого элемента в наблюдаемой последовательности и вызывает действие при корректном завершении наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
<TResult>(действие<TResult>,<исключений>действия ) | Перегруженные. Вызывает действие для каждого элемента в наблюдаемой последовательности и вызывает действие при исключительном завершении наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
<TResult>(действие<TResult>, действие<исключения>, действие) | Перегруженные. Вызывает действие для каждого элемента в наблюдаемой последовательности и вызывает действие при корректном или исключительном завершении наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
ElementAt<TResult> | Возвращает элемент по указанному индексу в последовательности. (Определяется наблюдаемым.) |
![]() |
ElementAtOrDefault<TResult> | Возвращает элемент по указанному индексу в последовательности или значении по умолчанию, если индекс выходит из диапазона. (Определяется наблюдаемым.) |
![]() |
, наконец,<TResult> | Вызывает указанное действие после того, как исходная наблюдаемая последовательность завершается обычно или по исключению. (Определяется наблюдаемым.) |
![]() |
первый<TResult>() | Перегруженные. Возвращает первый элемент наблюдаемой последовательности с указанным источником. (Определяется наблюдаемым.) |
![]() |
First<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает первый элемент наблюдаемой последовательности, соответствующий предикату. (Определяется наблюдаемым.) |
![]() |
FirstOrDefault<TResult>() | Перегруженные. Возвращает первый элемент наблюдаемой последовательности или значение по умолчанию, если значение не найдено. (Определяется наблюдаемым.) |
![]() |
FirstOrDefault<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает первый элемент наблюдаемой последовательности, соответствующий предикату, или значение по умолчанию, если значение не найдено. (Определяется наблюдаемым.) |
![]() |
Foo<TResult, R> | (Определяется MyExt.) |
![]() |
ForEach<TResult> | Вызывает действие для каждого элемента в наблюдаемой последовательности и блокируется до завершения последовательности. (Определяется наблюдаемым.) |
![]() |
GetEnumerator<TResult> | Возвращает перечислитель, перечисляющий все значения наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
GroupBy<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Группируйте элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей. (Определяется наблюдаемым.) |
![]() |
GroupBy<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Перегруженные. Группируйте элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором. (Определяется наблюдаемым.) |
![]() |
GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Перегруженные. Группирует элементы наблюдаемой последовательности и выбирает результирующий элемент с помощью указанной функции. (Определяется наблюдаемым.) |
![]() |
GroupBy<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Перегруженные. Группирует элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором и выбирает результирующий элемент с помощью указанной функции. (Определяется наблюдаемым.) |
![]() |
GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable<TKey, TResult>, IObservable<TDuration>>) | Перегруженные. Группируйте элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей. (Определяется наблюдаемым.) |
![]() |
GroupByUntil<TResult, TKey, TDuration>(Func<TResult, TKey>, Func<IGroupedObservable<TKey, TResult>, IObservable<TDuration>>, IEqualityComparer<TKey>) | Перегруженные. Группируйте элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором. (Определяется наблюдаемым.) |
![]() |
GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>) | Перегруженные. Группирует элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и выбирает результирующий элемент с помощью указанной функции. (Определяется наблюдаемым.) |
![]() |
GroupByUntil<TResult, TKey, TElement, TDuration>(Func<TResult, TKey>, Func<TResult, TElement>, Func<IGroupedObservable<TKey, TElement>, IObservable<TDuration>>, IEqualityComparer<TKey>) | Перегруженные. Группирует элементы наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором и выбирает результирующий элемент с помощью указанной функции. (Определяется наблюдаемым.) |
![]() |
GroupJoin<TResult, TRight, TLeftDuration, TRightDuration, TResult> | Сопоставляет элементы двух последовательностей на основе перекрывающихся длительностей и группирует результаты. (Определяется наблюдаемым.) |
![]() |
IgnoreElements<TResult> | Игнорирует все значения в наблюдаемой последовательности, оставляя только сообщения о завершении. (Определяется наблюдаемым.) |
![]() |
Join<TResult, TRight, TLeftDuration, TRightDuration, TResult> | Сопоставляет элементы двух последовательностей на основе перекрывающихся длительностей. (Определяется наблюдаемым.) |
![]() |
последний<TResult>() | Перегруженные. Возвращает последний элемент наблюдаемой последовательности с указанным источником. (Определяется наблюдаемым.) |
![]() |
последний<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает последний элемент наблюдаемой последовательности, которая соответствует предикату. (Определяется наблюдаемым.) |
![]() |
LastOrDefault<TResult> | Перегруженные. Возвращает последний элемент в наблюдаемой последовательности или значение по умолчанию, если значение не найдено. (Определяется наблюдаемым.) |
![]() |
LastOrDefault<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает последний элемент наблюдаемой последовательности, соответствующий предикату, или значение по умолчанию, если значение не найдено. (Определяется наблюдаемым.) |
![]() |
последние<TResult> | Примеры последнего значения в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
LongCount<TResult> | Возвращает int64, представляющий общее количество элементов в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
Материализуйте<TResult> | Материализует неявные уведомления наблюдаемой последовательности как явные значения уведомлений. (Определяется наблюдаемым.) |
![]() |
Max<TResult>() | Перегруженные. Возвращает максимальный элемент в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
Max<TResult>(IComparer<TResult>) | Перегруженные. Возвращает максимальное значение в наблюдаемой последовательности в соответствии с указанным сравнивателем. (Определяется наблюдаемым.) |
![]() |
MaxBy<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Возвращает элементы в наблюдаемой последовательности с максимальным значением ключа. (Определяется наблюдаемым.) |
![]() |
MaxBy<TResult, TKey>(Func<TResult, TKey>, IComparer<TKey>) | Перегруженные. Возвращает элементы в наблюдаемой последовательности с максимальным значением ключа. (Определяется наблюдаемым.) |
![]() |
Слияние<TResult>(IObservable<TResult>) | Перегруженные. Объединяет наблюдаемую последовательность наблюдаемых последовательностей в наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
Слияние<TResult>(IObservable<TResult>, IScheduler) | Перегруженные. Объединяет две наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
мин<TResult>() | Перегруженные. Возвращает минимальный элемент в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
мин<TResult>(IComparer<TResult>) | Перегруженные. Возвращает минимальное значение в наблюдаемой последовательности в соответствии с указанным сравнивателем. (Определяется наблюдаемым.) |
![]() |
MinBy<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Возвращает элементы в наблюдаемой последовательности с минимальным значением ключа. (Определяется наблюдаемым.) |
![]() |
MinBy<TResult, TKey>(Func<TResult, TKey>, IComparer<TKey>) | Перегруженные. Возвращает элементы в наблюдаемой последовательности с минимальным значением ключа в соответствии с указанным сравнивателем. (Определяется наблюдаемым.) |
![]() |
MostRecent<TResult> | Примеры последнего значения в наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
многоадресной рассылки<TResult, TResult>(ISubject<TResult, TResult>) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая при подключении приводит к отправке результатов исходной последовательности в указанную тему. (Определяется наблюдаемым.) |
![]() |
многоадресной рассылки<TResult, TIntermediate, TResult>(Func<ISubject<TResult, TIntermediate>>, Func<IObservable<TIntermediate>, IObservable<TResult>>) | Перегруженные. Возвращает наблюдаемую последовательность, содержащую элементы последовательности, созданной путем многоадресной рассылки исходной последовательности в функции селектора. (Определяется наблюдаемым.) |
![]() |
Следующее<TResult> | Примеры следующего значения (блокировка без буферизации) из наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
ObserveOn<TResult>(SynchronizationContext) | Перегруженные. Асинхронно уведомлять наблюдателей о указанном контексте синхронизации. (Определяется наблюдаемым.) |
![]() |
ObserveOn<TResult>(Control) | Перегруженные. (Определяется ControlObservable.) |
![]() |
ObserveOn<TResult>(диспетчер) | Перегруженные. (Определяется DispatcherObservable.) |
![]() |
ObserveOn<TResult>(DispatcherScheduler) | Перегруженные. (Определяется DispatcherObservable.) |
![]() |
ObserveOn<TResult>(IScheduler) | Перегруженные. Асинхронно уведомлять наблюдателей по указанному планировщику. (Определяется наблюдаемым.) |
![]() |
ObserveOnDispatcher<TResult> | (Определяется DispatcherObservable.) |
![]() |
OnErrorResumeNext<TResult> | Продолжает наблюдаемую последовательность, которая завершается обычно или исключением с следующей наблюдаемой последовательностью. (Определяется наблюдаемым.) |
![]() |
публикации<TResult>() | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку в базовой последовательности. (Определяется наблюдаемым.) |
![]() |
публикации<TResult>(TResult) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой последовательности и начинается с initialValue. (Определяется наблюдаемым.) |
![]() |
публикации<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая предоставляет одну подписку базовой последовательности. (Определяется наблюдаемым.) |
![]() |
Публикации<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TResult) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой последовательности и начинается с initialValue. (Определяется наблюдаемым.) |
![]() |
PublishLast<TResult>() | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку в базовой последовательности, содержащей только последнее уведомление. (Определяется наблюдаемым.) |
![]() |
PublishLast<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку на базовую последовательность, содержащую только последнее уведомление. (Определяется наблюдаемым.) |
![]() |
повторите<TResult>() | Перегруженные. Повторяет наблюдаемую последовательность на неопределенный срок. (Определяется наблюдаемым.) |
![]() |
повторите<TResult>(Int32) | Перегруженные. Повторяет наблюдаемую последовательность на неопределенный срок. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>() | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая разделяет одну подписку на базовую последовательность, переразив все уведомления. (Определяется наблюдаемым.) |
![]() |
воспроизведение<TResult>(TimeSpan) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая разделяет одну подписку на базовую последовательность, переразив все уведомления в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>(Int32) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой повторной отправки уведомлений bufferSize. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>(IScheduler) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая разделяет одну подписку на базовую последовательность, переразив все уведомления. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>(TimeSpan, IScheduler) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая разделяет одну подписку на базовую последовательность, переразив все уведомления в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>(Int32, IScheduler) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой повторной отправки уведомлений bufferSize. (Определяется наблюдаемым.) |
![]() |
воспроизведение<TResult>(Int32, TimeSpan) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой повторной отправки буферов буфераSize в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult>(Int32, TimeSpan, IScheduler) | Перегруженные. Возвращает подключаемую наблюдаемую последовательность, которая использует одну подписку для базовой повторной отправки буферов буфераSize в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая предоставляет одну подписку базовой последовательности и начинается с начального значения. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку на базовую последовательность, переразив все уведомления. (Определяется наблюдаемым.) |
![]() |
воспроизведение<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая разделяет одну подписку на базовую последовательность, повторяющую все уведомления в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку для базовой повторяющейся буферизации уведомлений. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, TimeSpan, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая разделяет одну подписку на базовую последовательность, повторяющую все уведомления в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку для базовой повторяющейся буферизации уведомлений. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку для базовой повторяющейся буферизации буферовSize в окне. (Определяется наблюдаемым.) |
![]() |
воспроизведения<TResult, TResult>(Func<IObservable<TResult>, IObservable<TResult>>, Int32, TimeSpan, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность, которая является результатом вызова селектора в подключаемой наблюдаемой последовательности, которая использует одну подписку для базовой повторяющейся буферизации буферовSize в окне. (Определяется наблюдаемым.) |
![]() |
повторная попытка<TResult>() | Перегруженные. Повторяет исходную наблюдаемую последовательность, пока она не завершится успешно. (Определяется наблюдаемым.) |
![]() |
повторная попытка<TResult>(Int32) | Перегруженные. Повторяет исходную наблюдаемую последовательность, пока она не завершится успешно. (Определяется наблюдаемым.) |
![]() |
пример<TResult>(TimeSpan) | Перегруженные. Примеры наблюдаемой последовательности по каждому интервалу. (Определяется наблюдаемым.) |
![]() |
пример<TResult>(TimeSpan, IScheduler) | Перегруженные. Примеры наблюдаемой последовательности с каждым интервалом с указанным источником, интервалом и планировщиком. (Определяется наблюдаемым.) |
![]() |
пример<TResult, TSample>(IObservable<TSample>) | Перегруженные. Примеры наблюдаемой последовательности при выборке галок с указанным источником и образцом. (Определяется наблюдаемым.) |
![]() |
Сканировать<TResult>(Func<TResult, TResult, TResult>) | Перегруженные. Применяет функцию аккуматора по наблюдаемой последовательности и возвращает каждый промежуточный результат с указанным источником и накопительным элементом. (Определяется наблюдаемым.) |
![]() |
Сканировать<TResult, TAccumulate>(TAccumulate, Func<TAccumulate, TResult, TAccumulate>) | Перегруженные. Применяет функцию аккумулятора к наблюдаемой последовательности и возвращает каждый промежуточный результат с указанным источником, начальным и накопительным элементом. (Определяется наблюдаемым.) |
![]() |
Выберите<TResult, TResult>(Func<TResult, TResult>) | Перегруженные. Проектируйте каждый элемент наблюдаемой последовательности в новую форму с указанным источником и селектором. (Определяется наблюдаемым.) |
![]() |
Выберите<TResult, TResult>(Func<TResult, Int32, TResult>) | Перегруженные. Проектируйте каждый элемент наблюдаемой последовательности в новую форму, включив индекс элемента с указанным источником и селектором. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TOther>(IObservable<TOther>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TResult>(Func<TResult, IObservable<TResult>>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TResult>(Func<TResult, IEnumerable<TResult>>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TResult>(Func<TResult, IObservable<TResult>>, Func<Exception, IObservable<TResult>>, Func<IObservable<TResult>>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TCollection, TResult>(Func<TResult, IEnumerable<TCollection>>, Func<TResult, TCollection, TResult>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SelectMany<TResult, TCollection, TResult>(Func<TResult, IObservable<TCollection>>, Func<TReslection, TCollection, TResult>) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в наблюдаемую последовательность и сглаживает полученные наблюдаемые последовательности в одну наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
SequenceEqual<TResult>(IObservable<TResult>) | Перегруженные. Определяет, равны ли две последовательности, сравнивая элементы по паре. (Определяется наблюдаемым.) |
![]() |
SequenceEqual<TResult>(IObservable<TResult>, IEqualityComparer<TResult>) | Перегруженные. Определяет, равны ли две последовательности путем сравнения элементов по паре с помощью указанного сравнения равенства. (Определяется наблюдаемым.) |
![]() |
<TResult>() | Перегруженные. Возвращает единственный элемент наблюдаемой последовательности и создает исключение, если в наблюдаемой последовательности нет ни одного элемента. (Определяется наблюдаемым.) |
![]() |
<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает единственный элемент наблюдаемой последовательности, соответствующий предикату, и вызывает исключение, если в наблюдаемой последовательности нет ни одного элемента. (Определяется наблюдаемым.) |
![]() |
SingleOrDefault<TResult>() | Перегруженные. Возвращает единственный элемент наблюдаемой последовательности или значение по умолчанию, если наблюдаемая последовательность пуста. (Определяется наблюдаемым.) |
![]() |
SingleOrDefault<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает единственный элемент наблюдаемой последовательности, соответствующий предикату, или значение по умолчанию, если значение не найдено. (Определяется наблюдаемым.) |
![]() |
Пропускать<TResult> | Проходит указанное число значений в наблюдаемой последовательности, а затем возвращает оставшиеся значения. (Определяется наблюдаемым.) |
![]() |
SkipLast<TResult> | Проходит указанное число элементов в конце наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
SkipUntil<TResult, TOther> | Возвращает значения из исходной наблюдаемой последовательности только после того, как другая наблюдаемая последовательность создает значение. (Определяется наблюдаемым.) |
![]() |
SkipTime<TResult>(Func<TResult, Boolean>) | Перегруженные. Передает значения в наблюдаемой последовательности, если указанное условие имеет значение true, а затем возвращает оставшиеся значения. (Определяется наблюдаемым.) |
![]() |
SkipTime<TResult>(Func<TResult, Int32, Boolean>) | Перегруженные. Передает значения в наблюдаемой последовательности, если указанное условие имеет значение true, а затем возвращает оставшиеся значения. (Определяется наблюдаемым.) |
![]() |
StartWith<TResult>TResult[]) | Перегруженные. Предустановка последовательности значений в наблюдаемой последовательности с указанным источником и значениями. (Определяется наблюдаемым.) |
![]() |
StartWith<TResult>(IScheduler, TResult[]) | Перегруженные. Подготовка последовательности значений к наблюдаемой последовательности с указанным источником, планировщиком и значениями. (Определяется наблюдаемым.) |
![]() |
подписка<TResult>() | Перегруженные. Вычисляет наблюдаемую последовательность с указанным источником. (Определяется ObservableExtensions.) |
![]() |
подписки<TRes>ult>(<<TResult) | Перегруженные. Подписывает обработчик элемента на наблюдаемую последовательность. (Определяется ObservableExtensions.) |
![]() |
подписка<TResult>(<<TResult>,>исключений<действия ) | Перегруженные. Подписывает обработчик элементов и обработчик исключений на наблюдаемую последовательность. (Определяется ObservableExtensions.) |
![]() |
подписки<TResult>(действие<TResult>, действие) | Перегруженные. Подписывает обработчик элементов и обработчик завершения в наблюдаемую последовательность. (Определяется ObservableExtensions.) |
![]() |
подписка<TResult>(действие<TResult>, действие<>исключения>, действие) | Перегруженные. Подписывает обработчик элементов, обработчик исключений и обработчик завершения в наблюдаемую последовательность. (Определяется ObservableExtensions.) |
![]() |
Подписка на<TResult>(SynchronizationContext) | Перегруженные. Асинхронно подписывается и отменяет подписки наблюдателей в указанном контексте синхронизации. (Определяется наблюдаемым.) |
![]() |
Подписки на<TResult>(Control) | Перегруженные. (Определяется ControlObservable.) |
![]() |
Подписка<TResult>(диспетчер) | Перегруженные. (Определяется DispatcherObservable.) |
![]() |
SubscribeOn<TResult>(DispatcherScheduler) | Перегруженные. (Определяется DispatcherObservable.) |
![]() |
SubscribeOn<TResult>(IScheduler) | Перегруженные. Асинхронно подписывается и отменяет подписку наблюдателей на указанный планировщик. (Определяется наблюдаемым.) |
![]() |
SubscribeOnDispatcher<TResult> | (Определяется DispatcherObservable.) |
![]() |
Синхронизация<TResult>() | Перегруженные. Синхронизирует наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
Синхронизация<TResult>(объект) | Перегруженные. Синхронизирует наблюдаемую последовательность. (Определяется наблюдаемым.) |
![]() |
Принять<TResult> | Возвращает указанное число смежных значений из начала наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
TakeLast<TResult> | Возвращает указанное число смежных элементов из конца наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
TakeUntil<TResult, TOther> | Возвращает значения из исходной наблюдаемой последовательности, пока другая наблюдаемая последовательность не выдает значение. (Определяется наблюдаемым.) |
![]() |
TakeTime<TResult>(Func<TResult, Boolean>) | Перегруженные. Возвращает значения из наблюдаемой последовательности до тех пор, пока указанное условие имеет значение true, а затем пропускает оставшиеся значения. (Определяется наблюдаемым.) |
![]() |
TakeTime<TResult>(Func<TResult, Int32, Boolean>) | Перегруженные. Возвращает значения из наблюдаемой последовательности до тех пор, пока указанное условие имеет значение true, а затем пропускает оставшиеся значения. (Определяется наблюдаемым.) |
![]() |
<TResult, TResult> | Соответствует, если наблюдаемая последовательность имеет доступное значение и проектировало значение. (Определяется наблюдаемым.) |
![]() |
TResult<TResult>(TimeSpan) | Перегруженные. Игнорирует значения из наблюдаемой последовательности, за которой следует другое значение до времени выполнения с указанным источником и dueTime. (Определяется наблюдаемым.) |
![]() |
TRes>ult<TResult (TimeSpan, IScheduler) | Перегруженные. Игнорирует значения из наблюдаемой последовательности, за которой следует другое значение перед временем выполнения с указанным источником, dueTime и планировщиком. (Определяется наблюдаемым.) |
![]() |
TimeInterval<TResult>() | Перегруженные. Записывает интервал времени между последовательными значениями в наблюдаемой последовательности с указанным источником. (Определяется наблюдаемым.) |
![]() |
TimeInterval<TResult>(IScheduler) | Перегруженные. Записывает интервал времени между последовательными значениями в наблюдаемой последовательности с указанным источником и планировщиком. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(TimeSpan) | Перегруженные. Возвращает наблюдаемую последовательность или timeoutException, если срок действия dueTime истекает. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(DateTimeOffset) | Перегруженные. Возвращает наблюдаемую последовательность или тайм-аутException, если время выполнения истекает. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(TimeSpan, IObservable<TResult>) | Перегруженные. Возвращает исходную наблюдаемую последовательность или другую наблюдаемую последовательность в случае истечения времени dueTime. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(DateTimeOffset, IObservable<TResult>) | Перегруженные. Возвращает наблюдаемую последовательность или timeoutException, если срок действия dueTime истекает. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(TimeSpan, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность или timeoutException, если срок действия dueTime истекает. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(DateTimeOffset, IScheduler) | Перегруженные. Возвращает наблюдаемую последовательность или timeoutException, если срок действия dueTime истекает. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(TimeSpan, IObservable<TResult>, IScheduler) | Перегруженные. Возвращает исходную наблюдаемую последовательность или другую наблюдаемую последовательность в случае истечения времени dueTime. (Определяется наблюдаемым.) |
![]() |
время ожидания<TResult>(DateTimeOffset, IObservable<TResult>, IScheduler) | Перегруженные. Возвращает исходную наблюдаемую последовательность или другую наблюдаемую последовательность в случае истечения времени dueTime. (Определяется наблюдаемым.) |
![]() |
метка времени<TResult>() | Перегруженные. Записывает метку времени для каждого значения в наблюдаемой последовательности с указанным источником. (Определяется наблюдаемым.) |
![]() |
метка времени<TResult>(IScheduler) | Перегруженные. Записывает метку времени для каждого значения в наблюдаемой последовательности с указанным источником и планировщиком. (Определяется наблюдаемым.) |
![]() |
ToArray<TResult> | Создает массив из наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
ToDictionary<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Создает словарь из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей. (Определяется наблюдаемым.) |
![]() |
ToDictionary<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Перегруженные. Создает словарь из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором. (Определяется наблюдаемым.) |
![]() |
ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Перегруженные. Создает словарь из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и функцией селектора элементов. (Определяется наблюдаемым.) |
![]() |
ToDictionary<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Перегруженные. Создает словарь из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей, компратором и функцией селектора элементов. (Определяется наблюдаемым.) |
![]() |
ToEnumerable<TResult> | Преобразует наблюдаемую последовательность в перечисленную последовательность. (Определяется наблюдаемым.) |
![]() |
ToEvent<TResult> | Предоставляет наблюдаемую последовательность как объект с событием .NET с указанным источником. (Определяется наблюдаемым.) |
![]() |
ToList<TResult> | Создает список из наблюдаемой последовательности. (Определяется наблюдаемым.) |
![]() |
ToLookup<TResult, TKey>(Func<TResult, TKey>) | Перегруженные. Создает подстановку из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей. (Определяется наблюдаемым.) |
![]() |
ToLookup<TResult, TKey>(Func<TResult, TKey>, IEqualityComparer<TKey>) | Перегруженные. Создает подстановку из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и компратором. (Определяется наблюдаемым.) |
![]() |
ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>) | Перегруженные. Создает подстановку из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей и функцией селектора элементов. (Определяется наблюдаемым.) |
![]() |
ToLookup<TResult, TKey, TElement>(Func<TResult, TKey>, Func<TResult, TElement>, IEqualityComparer<TKey>) | Перегруженные. Создает подстановку из наблюдаемой последовательности в соответствии с указанной функцией селектора ключей, компратором и функцией селектора элементов. (Определяется наблюдаемым.) |
![]() |
ToNotifier<TSource> | Создает обратный вызов уведомления от наблюдателя. (Определяется наблюдателя.) |
![]() |
ToTask<TResult>() | Перегруженные. Возвращает задачу, содержащую последнее значение наблюдаемой последовательности. (Определяется TaskObservableExtensions.) |
![]() |
ToTask<TResult>(object) | Перегруженные. Возвращает задачу, содержащую последнее значение наблюдаемой последовательности. (Определяется TaskObservableExtensions.) |
![]() |
ToTask<TResult>(CancellationToken) | Перегруженные. Возвращает задачу, содержащую последнее значение наблюдаемой последовательности. (Определяется TaskObservableExtensions.) |
![]() |
ToTask<TResult>(CancellationToken, Object) | Перегруженные. Возвращает задачу, содержащую последнее значение наблюдаемой последовательности. (Определяется TaskObservableExtensions.) |
![]() |
Где<TResult>(Func<TResult, Boolean>) | Перегруженные. Фильтрует элементы наблюдаемой последовательности на основе предиката. (Определяется наблюдаемым.) |
![]() |
Где<TResult>(Func<TResult, Int32, Boolean>) | Перегруженные. Фильтрует элементы наблюдаемой последовательности на основе предиката, включив индекс элемента. (Определяется наблюдаемым.) |
![]() |
окно<TResult>(Int32) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в последовательные не перекрывающиеся окна, создаваемые на основе сведений о количестве элементов. (Определяется наблюдаемым.) |
![]() |
окна |
Перегруженные. Проекты каждого элемента наблюдаемой последовательности в последовательные не перекрывающиеся окна, создаваемые на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
окно<TResult>(Int32, Int32) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в ноль или более окон, создаваемых на основе сведений о количестве элементов. (Определяется наблюдаемым.) |
![]() |
окно<TResult>(TimeSpan, IScheduler) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в последовательные не перекрывающиеся окна, создаваемые на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
окне<TResult>(TimeSpan, TimeSpan) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в ноль или более окон, которые создаются на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
окно<TResult>(TimeSpan, Int32) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в окно, которое завершается, когда оно заполнено или истекло определенное время. (Определяется наблюдаемым.) |
![]() |
окно<TResult>(TimeSpan, TimeSpan, IScheduler) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в ноль или более окон, которые создаются на основе сведений о времени. (Определяется наблюдаемым.) |
![]() |
<окна<TResult>(TimeSpan, Int32, IScheduler) | Перегруженные. Проектирует каждый элемент наблюдаемой последовательности в окно, которое завершается, когда оно заполнено или истекло определенное время. (Определяется наблюдаемым.) |
![]() |
Окно<TResult, TWindowClosing>(Func<IObservable<TWindowClosing>>) | Перегруженные. Проектируют каждый элемент наблюдаемой последовательности в последовательные не перекрывающиеся окна. (Определяется наблюдаемым.) |
![]() |
Окно<TResult, TWindowOpening, TWindowClosing>(IObservable<TWindowOpening>, Func<TWindowOpening, IObservable<TWindowClosing>>) | Перегруженные. Проекты каждого элемента наблюдаемой последовательности в ноль или более окон. (Определяется наблюдаемым.) |
![]() |
Zip<TResult, TSecond, TResult>(IObservable<TSecond>, Func<TResult, TSecond, TResult>) | Перегруженные. Объединяет две наблюдаемые последовательности в одну наблюдаемую последовательность, сочетая их элементы в парной форме. (Определяется наблюдаемым.) |
![]() |
Zip<TResult, TSecond, TResult>(IEnumerable<TSecond>, Func<TResult, TSecond, TResult>) | Перегруженные. Объединяет наблюдаемую последовательность и перечисленную последовательность в одну наблюдаемую последовательность с помощью функции селектора. (Определяется наблюдаемым.) |
Вверх
Замечания
Этот интерфейс субъекта обеспечивает гибкость для субъекта, чтобы наблюдать наблюдаемую последовательность одного типа при публикации наблюдаемой последовательности другого типа.
Примеры
В этом примере демонстрируется реализация ISubject<TSource, TResult>, которая наблюдает наблюдаемую последовательность одного типа при публикации наблюдаемой последовательности другого типа. AsciiConverterSubject в этом примере демонстрирует реализацию, наблюдая последовательности типов char и публикуя наблюдаемую последовательность int. Опубликованная наблюдаемая последовательность int — это код ASCII для каждого наблюдаемого значения char.
using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Reactive.Concurrency;
using System.Reactive.Disposables;
using System.Threading;
namespace Example
{
class Program
{
static void Main()
{
//****************************************************************************************//
//*** Create an observable sequence of char from console input until enter is pressed. ***//
//****************************************************************************************//
IObservable<char> keySequence = Observable.Create<char>(observer =>
{
bool bContinue = true;
while (bContinue)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key != ConsoleKey.Enter)
{
observer.OnNext(keyInfo.KeyChar);
}
else
{
observer.OnCompleted();
bContinue = false;
}
}
return (() => { });
});
//****************************************************************************************//
//*** Create an AsciiConverterSubject which takes a source type of char and returns an ***//
//*** observable sequence of int which is the ASCII code for source items of char. ***//
//****************************************************************************************//
AsciiConverterSubject myConverterSubject = new AsciiConverterSubject();
//****************************************************************************************//
//*** Subscribe to the keySequence on the .NET threadpool so the main thread can ***//
//*** create subscriptions to the AsciiConverterSubject ***//
//****************************************************************************************//
IDisposable subscription = keySequence.SubscribeOn(Scheduler.ThreadPool).Subscribe(myConverterSubject);
Console.WriteLine("\nEnter a sequence of keys to have the AsciiConverterSubject\nconvert the keys to their ASCII code values.\n");
Console.WriteLine("Press ENTER to terminate the observable sequence...\n");
//****************************************************************************************//
//*** Subscribe to the AsciiConverterSubject and write the ASCII code values to the ***//
//*** console window. ***//
//*** ***//
//*** The main thread will wait on the completion of the keySequence. It completes ***//
//*** when ENTER is pressed. ***//
//****************************************************************************************//
EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
myConverterSubject.Subscribe(c => Console.WriteLine("Ascii Char code {0} entered.",c), () => waitHandle.Set());
waitHandle.WaitOne();
//***************************************//
//*** Explicitly releasing resources. ***//
//***************************************//
subscription.Dispose();
myConverterSubject.Dispose();
}
}
//***********************************************************************************************//
//*** ***//
//*** The AsciiConverterSubject demonstrates an implementation of ISubject<TSource, TResult>. ***//
//*** It is used to subscribe to an observable sequence of char. It publishes an observable ***//
//*** sequence of int which should be the ASCII code for each char value it observes. ***//
//*** ***//
//***********************************************************************************************//
class AsciiConverterSubject : ISubject<char, int>, IDisposable
{
private List<IObserver<int>> observerList;
private bool isDisposed;
private bool isStopped;
object gate = new object();
Exception exception;
public AsciiConverterSubject()
{
observerList = new List<IObserver<int>>();
}
public void OnCompleted()
{
//****************************************************************************************//
//*** Make sure the OnCompleted operation is not preempted by another operation ***//
//*** which would break the expected behavior. For example, don't allow an error from ***//
//*** OnError preempt OnCompleted from anotther thread. Then OnCompleted would follow ***//
//*** an error. That would be an incorrect behavior. ***//
//****************************************************************************************//
lock (gate)
{
CheckDisposed();
if (!isStopped)
{
foreach (IObserver<int> observer in observerList)
{
observer.OnCompleted();
}
observerList.Clear();
isStopped = true;
}
}
}
public void OnError(Exception error)
{
if (error == null)
throw new ArgumentException("Exception error should not be null.");
//****************************************************************************************//
//*** Make sure the OnError operation is not preempted by another operation which ***//
//*** would break the expected behavior. For example, don't allow unsubscribe or an ***//
//*** OnCompleted operation to preempt OnError from another thread. This would result ***//
//*** in an error following completion. That would be an incorrect behavior. ***//
//****************************************************************************************//
lock (gate)
{
CheckDisposed();
if (!isStopped)
{
exception = error;
foreach (IObserver<int> observer in observerList)
{
observer.OnError(error);
}
observerList.Clear();
isStopped = true;
}
}
}
public void OnNext(char value)
{
//****************************************************************************************//
//*** Make sure the OnNext operation is not preempted by another operation which ***//
//*** would break the expected behavior. For example, don't allow unsubscribe, errors ***//
//*** or an OnCompleted operation to preempt OnNext from another thread. This would ***//
//*** have the result of items in a sequence following completion, errors, or ***//
//*** unsubscribe. That would be an incorrect behavior. ***//
//****************************************************************************************//
lock (gate)
{
CheckDisposed();
if (!isStopped)
{
foreach (IObserver<int> observer in observerList)
{
observer.OnNext(Convert.ToInt32(value));
}
}
}
}
public IDisposable Subscribe(IObserver<int> observer)
{
if (observer == null)
throw new ArgumentException("observer should not BehaviorSubject null.");
//****************************************************************************************//
//*** Make sure Subscribe occurs in sync with the other operations so we keep the ***//
//*** correct behavior depending on whether an error has occurred or the observable ***//
//*** sequence has completed. ***//
//****************************************************************************************//
lock (gate)
{
CheckDisposed();
if (!isStopped)
{
observerList.Add(observer);
return new Subscription(observer, this);
}
else if (exception != null)
{
observer.OnError(exception);
return Disposable.Empty;
}
else
{
observer.OnCompleted();
return Disposable.Empty;
}
}
}
private void Unsubscribe(IObserver<int> observer)
{
//****************************************************************************************//
//*** Make sure Unsubscribe occurs in sync with the other operations so we keep the ***//
//*** correct behavior. ***//
//****************************************************************************************//
lock (gate)
{
observerList.Remove(observer);
}
}
public void Dispose()
{
//****************************************************************************************//
//*** Make sure Dispose occurs in sync with the other operations so we keep the ***//
//*** correct behavior. For example, Dispose shouldn't preempt the other operations ***//
//*** changing state variables after they have been checked. ***//
//****************************************************************************************//
lock (gate)
{
observerList.Clear();
isStopped = true;
isDisposed = true;
}
}
private void CheckDisposed()
{
if (isDisposed)
throw new ObjectDisposedException("Subject has been disposed.");
}
//************************************************************************************//
//*** ***//
//*** The Subscription class wraps each observer that creates a subscription. This ***//
//*** is needed to expose an IDisposable interface through which a observer can ***//
//*** cancel the subscription. ***//
//*** ***//
//************************************************************************************//
class Subscription : IDisposable
{
private AsciiConverterSubject subject;
private IObserver<int> observer;
public Subscription(IObserver<int> obs, AsciiConverterSubject sub)
{
subject = sub;
observer = obs;
}
public void Dispose()
{
subject.Unsubscribe(observer);
}
}
}
}
Приведенные ниже выходные данные были созданы примером кода.
Enter a sequence of keys to have the AsciiConverterSubject
convert the keys to their ASCII code values.
Press ENTER to terminate the observable sequence...
Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 100 entered.
Ascii Char code 107 entered.
Ascii Char code 102 entered.
Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 100 entered.
Ascii Char code 107 entered.
Ascii Char code 102 entered.
Ascii Char code 59 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 107 entered.
Ascii Char code 100 entered.
Ascii Char code 59 entered.
Ascii Char code 102 entered.
Ascii Char code 108 entered.
Ascii Char code 115 entered.
Ascii Char code 107 entered.
Ascii Char code 100 entered.