2009-09-03 13 views

答えて

4

これは言及されていないので、このようなものにはSystem.Threading.Timerを使用することをお勧めします。

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(); 
} 

このようにして、ファイル削除コードをWindowsサービスで最小限の手間で実行することができます。

+0

あなたの提案をありがとう。いつStopDestroyTimer()を使用する必要がありますか? –

+0

タイマーを停止したいときや、サービス/アプリケーションがシャットダウンしているときに電話をかけるだけです。最も重要なのはいつか呼び出すことです - (System.Threading)TimerはIDisposableを実装しているので、Dispose()の呼び出しが必要です。 –

+0

もう一度ありがとうございます。わかった。 –

8
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); 
    } 
} 

あなたはそれは私が持っているアプリでイメージキャッシュをクリアするとき私が使用だけで何だ、何か他のもののためにLastWriteTimeプロパティを置き換えることができます。

EDIT:

このdoesntのは、タイマーの一部が含まれますが...私はあなたが自分でその部分を把握せていただきます。小さなグーグルでは、スケジュールどおりに行うためのいくつかの方法が示されます。

+0

コードのNeilに感謝します。これは私が探しているものです。 –

関連する問題