Tag: system.reactive

Rx:EnumerableEx.For()vs Enumerable.SelectMany()

System.Interactive.dll包含一个For()方法,具有以下实现: IEnumerable For( IEnumerable source, Func<TSource, IEnumerable> resultSelector) { return source.Select<TSource, IEnumerable>(resultSelector).Concat(); } 我错过了什么或者这相当于现有的Enumerable.SelectMany() ,减去this ? IEnumerable SelectMany( this IEnumerable source, Func<TSource, IEnumerable> selector)

适用于Silverlight 4 + WCF数据服务的IAsyncRepository或IObservableRepository

更新2 :@Enigmativity有一个很好的答案。 我已将其实现为IObservableRepository 。 我的答案详情如下。 问:所以我已经改变了大部分问题(参见编辑历史)如果有人对我的设计进行了评论/validation/推测,我会喜欢它。 =) 所以通常我的Repos看起来像这样: public interface IRepository where T : class { T GetById(int id); IQueryable GetAll(); void InsertOnSubmit(T entity); void DeleteOnSubmit(T entity); int SubmitChanges(); } 但是当谈到Silverlight和WCF数据服务时,它会使所有异步的查询相关数据变得非常烦人。 我必须首先加载父实体异步,然后查询其子实体异步。 所以我提出了一个IAsyncRepository ,我想知道设计是否正常,是否可以改进,(以及在这里使用Rx是否有意义?) 要解决子实体问题,我计划在调用回调之前加载所有必需的子实体。 我的回购看起来像: public interface IAsyncRepository where T : class { void GetById(int id, Action callback); void GetAllFromQuery(Func<MyEntities, IQueryable> funcquery, Action<IList> callback) […]

如何将IEnumerable转换为IObservable?

我想在不使用Rx ToObservable()和ToEnumerable()方法的情况下将IEnumerable集合转换为IObservable集合。

ReactiveUI(RxUI)与Reactive Extensions

来自http://docs.reactiveui.net/en/index.html : ReactiveUI是一个MVVM框架,允许您使用Reactive Extensions for .NET创建在任何移动或桌面平台上运行的优雅,可测试的用户界面。 RxUI与Reactive Extensions有什么不同? 为什么我更喜欢RxUI而不是MVVMCross / light + Rx? 有什么特别的? RxUI可以做一些Rx不能做的事情吗? 它更简洁吗? 它更舒适吗? 我在github页面https://github.com/reactiveui/ReactiveUI#a-compelling-example上看到了一些例子。 但我不能只用Rx做同样的事情吗? PS那里有API doc吗?

C#.NET Rx- System.Reactive在哪里?

我有一个密集的Java背景,所以请原谅我,如果我忽略了C#中明显的东西,但我的研究让我无处可去。 我正在尝试使用react nativeRx .NET库。 编译器并没有抱怨IObservable而是调用zip方法。 它正在抛出“……你错过了使用指令或汇编引用吗?” 我一直在浏览命名空间,但我找不到想要的东西。 我找不到System.Reactive ,如果使用它也会抛出错误,并且所有引用都已包含在此Windows 8.1应用程序中。 有人可以告诉我有什么问题吗? public sealed class EventEngine { private static readonly EventEngine singleton = new EventEngine(); public static EventEngine get() { return singleton; } public IObservable CurrentKey { get; set; } public IObservable CurrentScale { get; set; } public IObservable CurrentAppliedScale { get { return CurrentScale.zip(CurrentKey, (s, […]

何时使用IEnumerable vs IObservable?

如何确定方法是否应该返回IEnumerable或IObservable ? 为什么我会选择一种范式而不是另一种?

在Rx中选择Many

请任何人告诉我Rx中的SelectMany运算符是如何工作的。 我也不知道Linq中有关此运算符的更多信息。 请在一个简单示例的帮助下解释这一点,以及在什么情况下我们将在Rx中使用此运算符。

Reactive Extensions:批量处理事件+在每批之间添加延迟

我有一个应用程序,在某些时候几乎同时引发了1000个事件。 我想要做的是将事件批处理为50个项目的块并开始每10秒处理一次。 在开始新的批处理之前,无需等待批处理完成。 例如: 10:00:00: 10000 new events received 10:00:00: StartProcessing (events.Take(50)) 10:00:10: StartProcessing (events.Skip(50).Take(50)) 10:00:15: StartProcessing (events.Skip(100).Take(50)) 任何想法如何实现这一目标? 我认为Reactive Extensions是要走的路,但其他解决方案也是可以接受的。 我试着从这里开始: var bufferedItems = eventAsObservable .Buffer(15) .Delay(TimeSpan.FromSeconds(5) 但注意到延迟没有像我希望的那样工作,而是所有批次同时开始,但延迟了5秒。 我也测试了Window方法,但我没有发现任何行为上的差异。 我想Window中的TimeSpan实际上意味着“记录在接下来的10秒内发生的每一个事件: var bufferedItems = eventAsObservable .Window(TimeSpan.FromSeconds(10), 5) .SelectMany(x => x) .Subscribe(DoProcessing); 我正在使用Rx-Main 2.0.20304-beta。

为方法创建IObservable的好方法是什么?

比方说,我们有一个class级: public class Foo { public string Do(int param) { } } 我想创建一个由Do方法生成的值的可观察值。 一种方法是创建一个从Do调用的事件,并使用Observable.FromEvent创建observable。 但不知何故,为了完成任务,我对创建一个事件并不感到满意。 有没有更好的方法呢?

使用Rx(Reactive Extensions)监视ObservableCollection中的特定项

我有一个ObservableCollection,我需要引用一个特定的项目。 如果该项目不存在,我需要通过Reactive Extensions监视它是否/何时出现项目,但在设置语句时需要一些帮助。 我仍然不熟悉所有不同的Linq扩展是如何工作的,所以我不知道如何做到这一点。 谁能指出我正确的方向? 为了更好地说明,我需要类似以下内容: public class myitem :INotifyPropertyChanged { private string _key; private string _value; public string key { get { return _key; } set { _key = value; NotifyPropertyChanged(“key”); } } public string myvalue { //proper getter/setter, blah, blah } } ObservableCollection _collection = mycollection; var x = Observable.FromEvent( h => new […]