2016-09-29 17 views
3

後,我需要一段時間後清零的文本文件的方式。這是我迄今爲止清空文件內容X金額時間

List<string> previousWeaponList = new StreamWriter("PreviousList.txt"); 

因此,這是閱讀以前的武器清單到文件請求後,武器的武器被寫入到該列表。一旦我這樣做,我有一個文件,如果我保存每一個請求都會很快完成,這就是爲什麼我需要每X次清理一次。

是否可以做這樣的嗎?

private Thread fileCleaner; 
public void FileCleaner() 
{ 
    fileCleaner = new Thread(new ThreadStart(this.Run)) 
} 

這時正好有這如果是真的,那將只是寫入到文件,然後使用

Thread.Sleep(); 

聽說使用線程的時間是不是一個好主意運行的功能,但我我不是這方面的專家。

回答

2

非常類似的問題和答案在這裏:

Delete files from the folder older than 4 days

相關答案:

我會建議使用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

謝謝! –

4

使用Timer,並設置其Elapsed事件的回調到文件的清潔方法。

var timer = new Timer(10000); 
timer.Elapsed += (s, e) => File.Delete("C:\\your_file.txt"); 
timer.Enabled = true; 

如果你需要停止定時器,設定timer.Enabledfalse

+0

你能舉一個它應該是什麼樣子的例子嗎? –