gpt4 book ai didi

c# - 调用 subject.OnCompleted() 会整理/调用处置/不泄漏内存,还是我必须自己调用 IDisposable 上的处置?

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:18 25 4
gpt4 key购买 nike

Rx 问题,调用 subject.OnCompleted() 会清理/调用 dispose/不会泄漏内存,还是我必须自己在返回 IDisposable 时调用 dispose?

基本上我正在发出服务器请求/响应,并想知道客户端代码是否需要在下面的示例中调用 replaySubject.Dispose()。

提前致谢。

            try
{
object response = Send(msg);
replaySubject.OnNext(response);
}
catch (Exception e)
{
replaySubject.OnError(e);
}
finally
{
replaySubject.OnCompleted();
}

最佳答案

对于 ReplaySubjects,您应该处理它们以使它们确定性地释放它们的内部重放缓冲区。请注意,一旦您处理掉它们,任何 future 的订阅者都将无法看到重播的事件。因此,如果您仍然需要它们“重播”,请不要丢弃它们。

如果您不关心确定性,那么只要在它们完成后释放对它们的引用就足够了——当主题被垃圾回收时,它们的缓冲区将被清理。

关于c# - 调用 subject.OnCompleted() 会整理/调用处置/不泄漏内存,还是我必须自己调用 IDisposable 上的处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898157/

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