ListwithTimeout/ExpireCapability我需要这样一个函数:AddToList(txtName,timeExpire);看起来它是自描述的,该项目将自动过期并将其从列表中删除。我无法想象如何做到这一点。谁能给我一个线索?您也可以尝试这样的事情。创建自定义类publicclassCustom{stringitem;//将保存项目Timer计时器;//将处理过期列表refofMainList;//项目过期后将用于删除项目publicCustom(stringyourItem,intmilisec,ListrefOfList){refofMainList=refOfList;项目=你的项目;计时器=新计时器(毫秒);timer.Elapsed+=newElapsedEventHandler(Elapsed_Event);定时器。开始();}privatevoidElapsed_Event(objectsender,ElapsedEvente){timer.Elapsed-=newElapsedEventHandler(Elapsed_Event);refofMainList.Remove(这个);}}现在您可以创建List并使用它了。一旦指定的时间结束,其项目将被删除。如果您的目标是.NET4或更高版本,请使用MemoryCache(或从ObjectCache派生自定义实现)。回到4之前,如果您想在您的应用程序中使用缓存,您可以简单地获取System.Web.Cache并在任何.NET应用程序中使用它。它对任何“网络”代码没有任何真正的依赖性,但它确实需要您引用System.Web.dll。这看起来很奇怪(就像从C#应用程序引用Microsoft.VisualBasic.dll一样),但它实际上不会对您的应用程序产生负面影响。随着客户端配置文件的出现,打破以桌面为中心和以服务器为中心的代码之间的依赖关系变得很重要。因此引入了ObjectCache,以便桌面应用程序(不确定silverlight、wp7)开发人员可以打破这种依赖关系,并且能够仅针对客户端配置文件。举个简单的例子,答案是添加对System.Runtime.CachingMemoryCachecache=newMemoryCache("CacheName");的引用。cache.Add(key,value,newCacheItemPolicy(){AbsoluteExpiration=DateTime.UtcNow.AddSeconds(20)});然后,您可以通过访问if(cache.Contains(key))检查缓存中是否仍有内容。如果您希望缓存的时间限制较低,那么您需要通过一个不错的小Hack来更改缓存刷新时间。MemoryCacheAbsoluteExpiration行为异常您需要创建一个可以管理它的对象。想想每件物品需要存放什么。基本上,数据(例如txtName)和过期时间。这意味着您可能需要一个只包含这两个元素的类或结构。您的ExpiringList类将是该类型的列表。现在您已经有了基本的数据结构(ExpiringListItems的集合/列表),您需要考虑要支持的操作。目前您有用于列表的AddToList,其他的可能有RemoveFromList、Clear,也可能遍历所有项目。与普通List相比,ExpiringList唯一的独特之处在于您希望自动删除过期项目。所以让ExpiringList实现接口IList并在内部使用一个私有列表ExpiredListItem,也许你可以使你的列表(和所需的ExpiredListItem类)通用。除了理解和实现继承(这实际上是一个单独的问题)之外,棘手的部分是弄清楚如何删除过期的项目。这意味着在您的类中创建一个方法来迭代您的项目(以相反的顺序),将它们的过期时间与当前时间进行比较并删除过期时间。您只需调用内部列表中的相应方法即可实现该接口。您可以说此时您已经完成了,因为您只是定期调用该方法以确保在使用列表中的项目之前所有过期的项目都已消失。也许更好的选择是在运行内部列表上的方法之前调用此方法。根据您使用列表的方式,这可能有点矫枉过正。以上就是C#学习教程分享的全部内容:带超时/过期能力的列表。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
