c# - CompositeDisposable - 确定性顺序?

标签 c# .net system.reactive

这个问题引用了 CompositeDisposable System.Reactive.Disposables 命名空间中的类。

CompositeDisposable 对其成员调用 Dispose 的顺序是否确定?

以下实验生成列表 ['a', 'b'],但我在文档中看不到任何保证特定顺序的内容。

var result = new List<char>();
var disposable = new CompositeDisposable(
    Disposable.Create(() => result.Add('a')),
    Disposable.Create(() => result.Add('b')));
disposable.Dispose();

最佳答案

在内部 CompositeDisposable 使用以下字段来存储一次性元素:

private List<IDisposable> disposables;

它使用列表 .Add(...) 方法将项目添加到列表的末尾。当通过构造函数添加项目时,列表按顺序用一次性用品实例化。

然后,它在处置时对一次性用品使用一个简单的 foreach 循环。

因此您可以确信当前的实现会按顺序处理它们。您还可以做出明智的猜测,即使他们将来更改了实现,他们也不会更改此行为,否则这将是一个重大更改。

关于c# - CompositeDisposable - 确定性顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765432/

相关文章:

c# - C# 中的 C++ "system()"

c# - 大约 30 秒后 ActiveMq NMS 断开连接

c# - 如何暂停在工作线程上运行的任务并等待用户输入?

c# - SelectList 与 SelectListGroup

mvvm - 如何在 MVVM ViewModel 中获取 Rx Observable 事件流

visual-studio - f# 的响应式(Reactive)扩展

c# - System.reactive跨线程操作荒谬

c# - WCF 4.0 路由与 mex 使用 System.ServiceModel.Routing.RoutingService

c# - WPF 子窗口 - Windows 7 任务栏

c# - 与 lambda 一起使用的弱事件处理程序模型