如果我的应用程序关闭或崩溃,有什么好方法可以确保删除临时文件?理想情况下,我希望获得一个临时文件,使用它,然后忘记它.
现在,我保留了一个临时文件列表,并使用应用程序触发的EventHandler删除它们.应用程序退出.
有更好的办法吗?
如果我的应用程序关闭或崩溃,有什么好方法可以确保删除临时文件?理想情况下,我希望获得一个临时文件,使用它,然后忘记它.
现在,我保留了一个临时文件列表,并使用应用程序触发的EventHandler删除它们.应用程序退出.
有更好的办法吗?
如果进程过早终止,则无法保证任何结果,但是,我使用"using
"来实现这一点..
using System;
using System.IO;
sealed class TempFile : IDisposable
{
string path;
public TempFile() : this(System.IO.Path.GetTempFileName()) { }
public TempFile(string path)
{
if (string.IsNullOrEmpty(path)) throw new ArgumentNullException("path");
this.path = path;
}
public string Path
{
get
{
if (path == null) throw new ObjectDisposedException(GetType().Name);
return path;
}
}
~TempFile() { Dispose(false); }
public void Dispose() { Dispose(true); }
private void Dispose(bool disposing)
{
if (disposing)
{
GC.SuppressFinalize(this);
}
if (path != null)
{
try { File.Delete(path); }
catch { } // best effort
path = null;
}
}
}
static class Program
{
static void Main()
{
string path;
using (var tmp = new TempFile())
{
path = tmp.Path;
Console.WriteLine(File.Exists(path));
}
Console.WriteLine(File.Exists(path));
}
}
现在,当TempFile
被处置或垃圾收集时,该文件被删除(如果可能).显然,您可以随心所欲地严格限定作用域,或者在某个集合中使用它.