Je souhaite exécuter une minuterie toutes les 5 heures et supprimer les fichiers du dossier de plus de 4 jours. Pourriez-vous s'il vous plaît avec l'exemple de code?Supprimer les fichiers du dossier de plus de 4 jours
Répondre
Comme il n'a pas été mentionné, je recommanderais d'utiliser un System.Threading.Timer
pour quelque chose comme ça. Voici un exemple d'implémentation:
System.Threading.Timer DeleteFileTimer = null;
private void CreateStartTimer()
{
TimeSpan InitialInterval = new TimeSpan(0,0,5);
TimeSpan RegularInterval = new TimeSpan(5,0,0);
DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null,
InitialInterval, RegularInterval);
}
private void QueryDeleteFiles(object state)
{
//Delete Files Here... (Fires Every Five Hours).
//Warning: Don't update any UI elements from here without Invoke()ing
System.Diagnostics.Debug.WriteLine("Deleting Files...");
}
private void StopDestroyTimer()
{
DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
System.Threading.Timeout.Infinite);
DeleteFileTimer.Dispose();
}
De cette façon, vous pouvez exécuter votre code de suppression de fichiers dans un service de fenêtres avec un minimum de tracas.
Merci pour votre suggestion. Quand dois-je utiliser le StopDestroyTimer()? –
Appelez simplement lorsque vous souhaitez que la minuterie s'arrête ou lorsque votre service/application est en cours d'arrêt. La chose la plus importante est de l'appeler parfois - (System.Threading.) Timer implémente IDisposable de sorte que l'appel à Dispose() est nécessaire. –
Merci encore. Je l'ai. –
DateTime CutOffDate = DateTime.Now.AddDays(-4)
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fi = di.GetFiles();
for (int i = 0; i < fi.Length; i++)
{
if (fi[i].LastWriteTime < CutOffDate)
{
File.Delete(fi[i].FullName);
}
}
Vous pouvez remplacer LastWriteTime
propriété pour quelque chose d'autre, qui est exactement ce que j'utilise quand déblayer un cache d'image dans une application que j'ai.
EDIT:
Bien que cela ne marche pas inclure la partie de la minuterie ... Je vous laisse comprendre cette partie vous-même. Un peu de googling devrait vous montrer plusieurs façons de le faire sur un calendrier.
Merci Neil pour le code. C'est ce que je cherche. –
Y at-il une partie spécifique de ceci vous avez besoin de l'aide? Personne ne va simplement écrire le code pour vous. –