J'ai besoin d'une fonction comme ceci:
AddToList(txtName, timeExpire);
Il ressemble à de l'auto-descriptif, l'article sera automatiquement perdus et supprimés de la liste.
Je ne pouvais pas imaginer comment le faire. Quelqu'un peut-il me donner un indice?
source d'informationauteur Nime Cloud
vous pouvez également essayer quelque chose comme cela.
Créer une classe personnalisée
Maintenant, vous pouvez créer
List<Custom>
et de l'utiliser. C'est les articles seront supprimés une fois de temps spécifié.Si vous ciblez .NET 4 ou ci-dessus, utilisez le MemoryCache (ou tirer votre personnalisé de mise en œuvre de ObjectCache).
De retour avant le 4, si vous vouliez une cache dans votre application, il vous suffit d'accrocher Système.Web.Cache et l'utilisation qui en toute .NET application. Il n'avait pas du tout réel dépendances sur un "web" de code, mais elle n'a besoin de la référence de System.Web.dll. Il semblait bizarre (comme le référencement Microsoft.VisualBasic.dll à partir d'une application en C#), mais n'a pas réellement nuire à votre demande de façon négative.
Avec l'avènement de la Profil Du Clientcasser les dépendances entre les ordinateurs de bureau centrée sur le code et centré sur le serveur de code est devenu important. Ainsi, le ObjectCache a été mis en place afin que l'application desktop (pas sûr de silverlight, wp7) les développeurs pourraient briser cette dépendance et être en mesure de cibler le profil du client.
Juste un petit exemple pour la réponse Sera donné
Ajouter une référence à System.Moment de l'exécution.La mise en cache
Vous pouvez ensuite vérifier si quelque chose est encore dans le cache en allant
Et si vous voulez que votre cache ont une faible limite de temps, alors vous aurez besoin de changer le temps de rafraîchissement du cache avec un joli petit hack.
MemoryCache AbsoluteExpiration comporte de façon étrange
Vous aurez besoin de créer un objet qui peut gérer cela.
Réfléchir à ce qu'il aura besoin de stocker par article. Fondamentalement, les données (p. ex.
txtName
), et une heure d'expiration. Cela signifie que vous aurez probablement besoin d'une classe ou structure qui a juste ces 2 éléments.Votre
ExpiringList
classe sera une liste de ce type.Maintenant vous avez votre structure de base de données (une collection/liste de
ExpiringListItem
), vous devez penser à ce que les opérations que vous voulez soutenir. Actuellement, vous avez listé AddToList, d'autres seraient probablement RemoveFromList, Clair, et peut-être une itération sur tous les articles.La seule chose unique à votre ExpiringList par rapport à la normale
List<T>
est que vous souhaitez supprimer automatiquement les éléments périmés. Par conséquent, il serait logique de faire de votre ExpiringList implémenter l'interfaceIList<T>
et l'utilisation d'une Liste privée à l'interne, peut-être que vous pourriez faire votre liste (et par la nécessité de votreExpiredListItem
classe générique.La partie la plus délicate, au-delà de la compréhension et de la mise en œuvre de l'héritage (une question distincte vraiment), de façon à supprimer les articles périmés.
Ceci implique la création d'une méthode au sein de votre classe qui réitéré (dans l'ordre inverse) sur vos articles, en les comparant à leur date d'expiration du temps avec l'heure et la suppression de expirés.
Vous pouvez implémenter l'interface tout simplement en appelant les méthodes appropriées sur votre liste interne.
Vous pourriez dire à ce stade, vous avez terminé, puisque vous suffit d'appeler la méthode périodiquement afin de s'assurer assurer que tous les éléments périmés sont partis avant d'utiliser les éléments de la liste.
Peut-être une meilleure option serait d'appeler cette méthode avant l'exécution de la méthode sur la liste interne. Selon la façon dont vous allez utiliser votre liste peut-être exagéré.