X 时间后清除文件内容
Clear File Contents After X Amount Of Time
我需要一种在一段时间后清除文本文件的方法。这是我目前所拥有的
List<string> previousWeaponList = new StreamWriter("PreviousList.txt");
所以这是在请求武器后将先前的武器列表读入文件,武器被写入该列表。一旦我这样做了,我就有了一个文件,如果我保存每一个请求,它会很快变满,这就是为什么我需要每隔 X 时间清理它。
这样可以吗?
private Thread fileCleaner;
public void FileCleaner()
{
fileCleaner = new Thread(new ThreadStart(this.Run))
}
然后只需要一个 运行 函数,如果它是真的,它只会写入文件,然后使用
Thread.Sleep();
我听说使用 Threads 来节省时间不是一个好主意,但我不是这方面的专家。
使用 Timer,并将其 Elapsed
事件的回调设置为文件清理方法。
var timer = new Timer(10000);
timer.Elapsed += (s, e) => File.Delete("C:\your_file.txt");
timer.Enabled = true;
如果您需要停止计时器,请将 timer.Enabled
设置为 false
。
这里有非常相似的问题和答案:
Delete files from the folder older than 4 days
相关回答:
I would recommend using a System.Threading.Timer for something like this. Here's an example implementation:
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();
}
This way, you can run your file deletion code in a windows service with minimal hassle.
我需要一种在一段时间后清除文本文件的方法。这是我目前所拥有的
List<string> previousWeaponList = new StreamWriter("PreviousList.txt");
所以这是在请求武器后将先前的武器列表读入文件,武器被写入该列表。一旦我这样做了,我就有了一个文件,如果我保存每一个请求,它会很快变满,这就是为什么我需要每隔 X 时间清理它。
这样可以吗?
private Thread fileCleaner;
public void FileCleaner()
{
fileCleaner = new Thread(new ThreadStart(this.Run))
}
然后只需要一个 运行 函数,如果它是真的,它只会写入文件,然后使用
Thread.Sleep();
我听说使用 Threads 来节省时间不是一个好主意,但我不是这方面的专家。
使用 Timer,并将其 Elapsed
事件的回调设置为文件清理方法。
var timer = new Timer(10000);
timer.Elapsed += (s, e) => File.Delete("C:\your_file.txt");
timer.Enabled = true;
如果您需要停止计时器,请将 timer.Enabled
设置为 false
。
这里有非常相似的问题和答案:
Delete files from the folder older than 4 days
相关回答:
I would recommend using a System.Threading.Timer for something like this. Here's an example implementation:
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(); }
This way, you can run your file deletion code in a windows service with minimal hassle.