Здравствуйте, Константин Л., Вы писали:
КЛ>При пустой цепочке IObservable ForkJoin зависает навсегда:
КЛ>
КЛ>void Test()
КЛ>{
КЛ> var list = Observable.ForkJoin(new string[] { null, null }.Where(s => s != null).Select(s => Observable.Start(() => Check(s))));
КЛ> var ok = list.First().All(v => v);
КЛ>}
КЛ>bool Check(string s)
КЛ>{
КЛ> return s != null;
КЛ>}
КЛ>
Это не ForkJoin зависает, он тупо возвращает бесконечную пустую последовательность, так как на вход после Where() ему была подана пустая последовательность...
Зависает First(), синхронно ожидая первый элемент последовательности list...
Есть мнение, что это некорректный behavior оператора FormJoin (имхо логичнее ему было вернуть OnCompleted), я бы отписал на Rx Forum.
[]
П>Это не ForkJoin зависает, он тупо возвращает бесконечную пустую последовательность, так как на вход после Where() ему была подана пустая последовательность... П>Зависает First(), синхронно ожидая первый элемент последовательности list...
П>Есть мнение, что это некорректный behavior оператора FormJoin (имхо логичнее ему было вернуть OnCompleted), я бы отписал на Rx Forum.
П>
по идее First() должен кидать исключение при пустой входящей последовательности в ForkJoin, форкать то нечего
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, Пельмешко, Вы писали:
КЛ>[]
П>>Это не ForkJoin зависает, он тупо возвращает бесконечную пустую последовательность, так как на вход после Where() ему была подана пустая последовательность... П>>Зависает First(), синхронно ожидая первый элемент последовательности list...
П>>Есть мнение, что это некорректный behavior оператора FormJoin (имхо логичнее ему было вернуть OnCompleted), я бы отписал на Rx Forum.
П>>
КЛ>по идее First() должен кидать исключение при пустой входящей последовательности в ForkJoin, форкать то нечего
Она не просто пустая, она бесконечная, как Observable.Never<T>(), поэтому с First() всё ок.
Тут ForkJoin() должен либо исключение бросать, либо пустую последовательность (один OnCompleted) возвращать.
Здравствуйте, Пельмешко, Вы писали:
П>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, Пельмешко, Вы писали:
КЛ>>[]
П>>>Это не ForkJoin зависает, он тупо возвращает бесконечную пустую последовательность, так как на вход после Where() ему была подана пустая последовательность... П>>>Зависает First(), синхронно ожидая первый элемент последовательности list...
П>>>Есть мнение, что это некорректный behavior оператора FormJoin (имхо логичнее ему было вернуть OnCompleted), я бы отписал на Rx Forum.
П>>>
КЛ>>по идее First() должен кидать исключение при пустой входящей последовательности в ForkJoin, форкать то нечего
П>Она не просто пустая, она бесконечная, как Observable.Never<T>(), поэтому с First() всё ок.
эээ, откуда она бесконечная? Where дает пустую последовательность
П>Тут ForkJoin() должен либо исключение бросать, либо пустую последовательность (один OnCompleted) возвращать.
Здравствуйте, Пельмешко, Вы писали:
П>Здравствуйте, Константин Л., Вы писали:
КЛ>>эээ, откуда она бесконечная? Where дает пустую последовательность
П>А вот ForkJoin() возвращает бесконечную.