[英]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.