繁体   English   中英

不使用时如何删除静态字典中的条目

[英]How to Delete Entries In Static Dictionary When Not Used

我有一个包含对象字典的静态类。 我有多个线程可以访问此词典并在线程上创建特定于线程的对象。 线程“完成”后,如何以及何时可以从字典中删除条目?

基本上,这是ASP.NET应用程序的静态类,所有请求都可以具有在词典中创建的“隔离对象”(与当前线程相关)。 但是,我真的不想被ASP.NET束缚。

这有意义吗?

您可以使用[ThreadStatic]属性装饰静态字段,每个线程将看到自己的值。 如果使用的是.NET 4.0,则也可以使用ThreadLocal<T>来做到这一点。 基本上,每个线程拥有一个自己的对象都需要一个单独的字典,而不是将所有对象都保存在一个字典中。

假设您将线程的ID(或其他一些唯一的标识符)与对象一起存储,则可以从线程关闭代码中触发事件(具有此唯一的ID),以使字典知道线程已经完成了其对象。

您的静态类可以预订此事件,然后在字典中循环删除所有具有此ID的对象。

我认为。

听起来您的字典正在用作缓存。

您是否考虑过使用现有的缓存解决方案而不是自己滚动? 企业库具有一个不错的缓存块 ,可为您管理缓存对象的生命周期提供极大的灵活性,包括在一段时间不活动后将其超时。 (即线程已消失)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM