C# 如果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

当我尝试从程序中打开pdf报告时,如果pdf文件已打开,则会显示异常,如“进程无法访问文件'path..\sample.pdf',因为另一进程正在使用它”。。如何显示文档已打开的消息。或者如何根据我的请求重新打开同一个打开的pdf文件??这一行显示异常

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()”有效。。