我已将一些pdf文件写入临时目录,这些文件显示为用户可以查看的缩略图。当我关闭我的表单时,我清理临时目录中的所有文件。
但是,如果用户打开其中一个缩略图然后关闭我的应用程序 - 它会删除文件然后抛出异常,因为pdf在另一个进程中打开而无法清除。
我想我这是一个令人震惊的编程决定,但我仍然是新手!我应该如何在我的代码中解释这一点?
由于
答案 0 :(得分:2)
您可以使用类似于下面的代码检测文件是否正在使用,然后使用该代码警告用户无法删除文件。 遗憾的是,您无法删除正在使用的文件。
public static bool IsFileInUse(string pathToFile)
{
if (!System.IO.File.Exists(pathToFile))
{
// File doesn't exist, so we know it's not in use.
return false;
}
bool inUse = false;
System.IO.FileStream fs;
try
{
fs = System.IO.File.Open(pathToFile, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read, System.IO.FileShare.None);
fs.Close();
}
catch (System.IO.IOException ex)
{
string exMess = ex.Message;
inUse = true;
}
return inUse;
}
答案 1 :(得分:0)
你应该捕获该异常(在catch块中你可以通知用户关闭该文件或者它不会被删除),如果临时目录是你的,你可以尝试在应用程序启动时删除它(或者当它再次结束时删除它) ),如果它的Windows临时目录,那么它没关系那么多
答案 2 :(得分:0)
像File Unlocker这样的工具可以发布文件。但是我认为这可能使程序取决于文件崩溃...
也许您可以通过Process.Start
查找他们如何解锁文件或设法执行解锁程序来解锁文件并将其删除。
但是,如果您阻止该文件,则应尝试在程序中修复此问题。也许你应该在尝试清理它之前处理所有加载的文件(文件流等)。