gpt4 book ai didi

c# - RX.Net 中的 Subject 总是有害的吗?

转载 作者:太空狗 更新时间:2023-10-29 17:50:41 24 4
gpt4 key购买 nike

我正在和一位同事交谈,他向我指出了关于 subjects being considered harmful 的 SO 问题.但是,在两种情况下,我有一些非确定性代码,这些代码在任何其他方面似乎都不合理。

非标准事件:

 event handler(class, result)
{
subject.OnNext(result);
}

public delegate void _handler
([MarshalAs(UnmanagedType.Interface), In] MyClass class,
[MarshalAs(UnmanagedType.Interface), In] ResultClass result)

并行任务(不确定数量的任务全部并行运行,在不同时间开始):

 Task.Start(()=> ...).ContinueWith(prevTask => subject.OnNext(prevTask.result))

主题不会暴露,只能通过一个可观察对象。是否有另一条建议的路线不是大量的样板文件?

最佳答案

主题并不总是有害的。即使在 Rx 本身中也有许多合法的用途。然而,很多时候一个人去使用一个主题,已经有一个为该场景编写的强大的 Rx 方法(它可能在内部使用也可能不使用主题)。您的 2 个示例就是这种情况。查看 Task.ToObservable 和 Observable.FromEventPattern。

另一个常见的主题被滥用的情况是开发人员将一个流分成两部分。他们确信他们需要订阅流,并在回调中为新流生成数据。他们用一个主题来做到这一点。但通常他们应该改用 Select。

关于c# - RX.Net 中的 Subject 总是有害的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com