C# 如果pdf文件已打开,如何显示错误消息?
当我尝试从程序中打开pdf报告时,如果pdf文件已打开,则会显示异常,如“进程无法访问文件'path..\sample.pdf',因为另一进程正在使用它”。。如何显示文档已打开的消息。或者如何根据我的请求重新打开同一个打开的pdf文件??这一行显示异常C# 如果pdf文件已打开,如何显示错误消息?,c#,pdf,C#,Pdf,当我尝试从程序中打开pdf报告时,如果pdf文件已打开,则会显示异常,如“进程无法访问文件'path..\sample.pdf',因为另一进程正在使用它”。。如何显示文档已打开的消息。或者如何根据我的请求重新打开同一个打开的pdf文件??这一行显示异常 PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"F:\\reports\\" + "DepartmentPresentReport.pdf", FileMode.Cre
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"F:\\reports\\" + "DepartmentPresentReport.pdf", FileMode.Create));
尝试使用try/catch来处理异常
try
{
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"F:\\reports\\" + "DepartmentPresentReport.pdf", FileMode.Create));
}
catch (Exception e)
{
// close already open file/ return exception
}
第一个简单的解决方案是,您可以使用
try-catch
语句打开文件,并根据错误消息(ID)
处理错误。您甚至可以使用FileStream捕获异常
private bool IsFileInUse(string path, FileAccess access = FileAccess.Write)
{
try
{
using (var fs = new FileStream(path, FileMode.Open, access, FileShare.Read)) { }
}
catch (IOException e)
{
return (Marshal.GetHRForException(e) & 0xFFFF) == 32;
}
return false;
}
仔细检查-如果在字符串前面添加@字符,反斜杠不是转义字符@“F:\reports\”如何查找错误消息(ID)我得到的唯一例外我是这样做的“int code=System.Runtime.InteropServices.Marshal.GetExceptionCode()”有效。。