如果 pdf 文件已经打开,如何显示错误消息?

How to show error message if the pdf file is already open?

当我尝试从我的程序打开我的 pdf 报告时,如果 pdf 文件已经打开,它会显示类似 "The process cannot access the file 'path..\sample.pdf' because it is being used by another process".[ 的异常=16=]。如何显示文档已打开的消息。或者如何根据我的要求重新打开同一个打开的 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语句打开文件,根据error message (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;
    }