Оператор окна Rx.Net, который открывается по первому и следующему значению после закрытия - PullRequest
0 голосов
/ 02 октября 2018

Я хотел бы сделать оператор окна Reactive Extension, который:

  1. Открывает окно по первому значению (не по подписке)
  2. Закрывает это окно позаданное время ожидания после этого значения
  3. Открывает новое окно для первого значения после закрытия

Таким образом, никогда не создавая перекрытия, но допуская пропуски.

У меня не получилосьдалеко.У кого-нибудь есть хорошая идея, как это сделать?

1 Ответ

0 голосов
/ 02 октября 2018

Кажется, что GroupByUntil выполняет свою задачу:

public static IObservable<IObservable<T>> LazyWindow<T, TClosing>(
    this IObservable<T> source, Func<IObservable<TClosing>> windowClose) => source
        .GroupByUntil(x => 0, group => windowClose())
        .Select(x => (IObservable<T>) x);

РЕДАКТИРОВАТЬ: не используйте null в качестве постоянного ключа группы, это привело к NRE в рамках.Очень странно.

...