如何在.NET 8中构建具有实时更新跟踪的高性能异步字典?

问题描述 投票:0回答:1

我需要使用异步

WaitForUpdate
方法在 C# 中实现一个相对简单的字典类。此方法应该允许异步等待指定键值的更新。默认情况下,当为引用类型 (TValue) 传递新引用或为值类型分配新值时,会发生更新。此外,如果集合实现了
IObservableCollection
接口,该方法应该监视集合内的更改。

如果添加或更新了值,则

WaitForUpdate
方法应立即返回。鉴于该类将在项目中大量使用,您对改进和优化该类有何建议?

理想情况下,我想避免使用

CollectionChangedHandlerController
并创建一个单独的字典来管理它。但是,我不确定如何在没有它的情况下有效控制事件处理程序(例如,防止触发删除或替换的集合的处理程序)。任何指导将不胜感激!

c# .net
1个回答
2
投票

快速浏览一下,我有一些建议可以在代码中重复使用,因为您正在使用 .NET 8

CollectionChangedHandlerController 类

我看到您对 EventHandler 进行了空检查:

if (EventHandler != null)
throw new InvalidOperationException("A handler is already registered for this collection change event");

这意味着EventHandler是可为空的,因此您可以在属性上添加可为空的:

private Event<Handler>CollectionChangedEventArgs>? EventHandler;

可选更改:

  • 在只有一个构造函数的类上使用主构造函数
    private class CollectionChangedHandlerController(IObservableCollection collection)
{

    public IObservableCollection Collection { get; } = collection;
}
  • 调整 if null 异常: ArgumentNullException.ThrowIfNull(eventHandler);
© www.soinside.com 2019 - 2024. All rights reserved.