C# X时间后清除文件内容

C# X时间后清除文件内容,c#,twitch,C#,Twitch,我需要一种在一定时间后清除文本文件的方法。这就是我目前所拥有的 List<string> previousWeaponList = new StreamWriter("PreviousList.txt"); 然后有一个run函数,如果它是真的,它只会写入文件,然后使用 Thread.Sleep(); 我听说在时间上使用线程不是一个好主意,但我不是这方面的专家。使用a,并将其已用事件的回调设置为文件清理方法 var timer = new Timer(10000); timer.E

我需要一种在一定时间后清除文本文件的方法。这就是我目前所拥有的

List<string> previousWeaponList = new StreamWriter("PreviousList.txt");
然后有一个run函数,如果它是真的,它只会写入文件,然后使用

Thread.Sleep();
我听说在时间上使用线程不是一个好主意,但我不是这方面的专家。

使用a,并将其
已用事件的回调设置为文件清理方法

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

如果您需要停止计时器,请将
timer.Enabled
设置为
false

非常类似的问题和答案如下:

有关答复:

我建议使用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服务中运行文件删除代码,而无需太多麻烦

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