问题描述:
程序画面上有打开PDF的按钮,这个PDF文件的数据是从数据库中取出来的数据临时生成的PDF文件,保存在Temp目录下,当打开PDF文件,关闭的时候会去调用Exited事件。在Exited事件的消息响应函数中会把临时生成的文件删除掉。
下面我贴一段代码。
private void Button_Click(object sender, EventArgs e)
{
//从数据库中取出来的数据临时生成的文件 string fileName = @"C:\Users\czsun.OBC-NET\AppData\Local\Temp\tmp5BB8.pdf";
System.Diagnostics.Process process = new Process();
process.EnableRaisingEvents = true;
process.StartInfo.FileName = fileName;
process.StartInfo.ErrorDialog = true;
process.Exited += new EventHandler(process_Exited);
process.Start();
} private void process_Exited(object sender, EventArgs e)
{
System.Diagnostics.Process process = sender as System.Diagnostics.Process;
if (process != null)
{
if (File.Exists(process.StartInfo.FileName))
{
File.Delete(process.StartInfo.FileName);
}
}
}
第一次打开文件时候没有什么问题,当这个PDF文件没有关闭,我再次打开PDF文件的时候就会出错。原因就是我再次打开文件的时候会去走第一次生成的Process.Exited 消息响应函数,去删除第一次生成的PDF文件。然后就会出异常,提示要删除的文件正被另一个进程使用。怎么解决这个问题呢?请各位高人指导一下。不胜感激
程序画面上有打开PDF的按钮,这个PDF文件的数据是从数据库中取出来的数据临时生成的PDF文件,保存在Temp目录下,当打开PDF文件,关闭的时候会去调用Exited事件。在Exited事件的消息响应函数中会把临时生成的文件删除掉。
下面我贴一段代码。
private void Button_Click(object sender, EventArgs e)
{
//从数据库中取出来的数据临时生成的文件 string fileName = @"C:\Users\czsun.OBC-NET\AppData\Local\Temp\tmp5BB8.pdf";
System.Diagnostics.Process process = new Process();
process.EnableRaisingEvents = true;
process.StartInfo.FileName = fileName;
process.StartInfo.ErrorDialog = true;
process.Exited += new EventHandler(process_Exited);
process.Start();
} private void process_Exited(object sender, EventArgs e)
{
System.Diagnostics.Process process = sender as System.Diagnostics.Process;
if (process != null)
{
if (File.Exists(process.StartInfo.FileName))
{
File.Delete(process.StartInfo.FileName);
}
}
}
第一次打开文件时候没有什么问题,当这个PDF文件没有关闭,我再次打开PDF文件的时候就会出错。原因就是我再次打开文件的时候会去走第一次生成的Process.Exited 消息响应函数,去删除第一次生成的PDF文件。然后就会出异常,提示要删除的文件正被另一个进程使用。怎么解决这个问题呢?请各位高人指导一下。不胜感激
Process[] process = Process.GetProcessesByName("Acrobat.exe");//找到pdf进城
if(process.Length > 0)
process[0].Kill();要不你发现文件正被打开,就忽略不管
Process[] process = Process.GetProcessesByName("Acrobat.exe");//找到pdf进城 你这么写是其中的一种PDF软件。有很多PDF软件的,你这个是adobe公司的,我用的就不是。
而想打开的话可以Copy一份来打开
当前的应用程序没有退出啊。