Jus*_*ony 9 c# reactive-programming system.reactive
我正在和一位同事交谈,他向我指出了有关被认为有害的主题的问题.但是,我有两种情况,我有一些非确定性代码,似乎没有任何其他方式合理.
非标准活动:
event handler(class, result)
{
subject.OnNext(result);
}
public delegate void _handler
([MarshalAs(UnmanagedType.Interface), In] MyClass class,
[MarshalAs(UnmanagedType.Interface), In] ResultClass result)
Run Code Online (Sandbox Code Playgroud)
并行任务(非确定性任务数量并行运行,从不同时间开始):
Task.Start(()=> ...).ContinueWith(prevTask => subject.OnNext(prevTask.result))
Run Code Online (Sandbox Code Playgroud)
只有通过观察才能暴露主体.有没有其他路线建议不是很多样板?
受试者并不总是有害的.即使在Rx本身内,它们也有许多合法用途.然而,很多时候一个人去使用主题,已经为该场景编写了一个强大的Rx方法(它可能会也可能不会在内部使用主题).您的2个示例就是这种情况.查看Task.ToObservable和Observable.FromEventPattern.
另一个常见的案例主题是滥用,即开发人员将流分成两部分.他们确信他们需要订阅流,并且在回调中他们为新流生成数据.他们用主题做这件事.但通常他们应该使用Select代替.