c# - C#如何检查pdf文件是否打开(也使用itextsharp)
问题描述
我一直无法弄清楚如何在我的程序中检查 pdf 文档当前是否打开。这是一个主要问题,因为我的程序为我的客户创建了 pdf 文档,但我的客户通过打开它来查看她的文档并尝试在 pdf 文档打开时修复任何拼写错误,导致程序崩溃并丢失很多进度. 我尝试了几种方法来尝试检测程序是否打开,但无济于事。
该程序是一个 C# 桌面应用程序,用于使用 itextsharp 创建 pdf 文档。
有人可以给我一个声明,我可以用它来检查 pdf 是否打开或被另一个进程使用?在解决此问题之前,我的客户无法继续她的工作。
解决方案
您应该像对待任何类型的文件一样这样做。
protected virtual bool IsFileInUse(FileInfo file)
{
try
{
FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
stream.Dispose();
}
catch (IOException)
{
//Could not access because file is in use.
return true;
}
//file is not in use
return false;
}
FileShare.None 保证当您拥有访问权限时,其他人无法打开文件进行修改。
注意:如果阅读器已加载文件流然后关闭文件,这可能不起作用。但是我想这对你来说不是问题。
推荐阅读
- clang - 为什么添加 xorps 指令会使这个函数使用 cvtsi2ss 并增加约 5 倍的速度?
- javascript - 如何访问 lambda 函数中的分区键?
- javascript - 在 google web javascript API 中通过单击复选框来切换多个 GeoJSON 层
- c# - 尝试使用 protobuf-net grpc 进行 grpc 时,线型(字符串)无效
- python - NumPy 通过索引获取多行的快速方法
- html - 如何使这个自定义引导导航栏响应视口大小?
- node.js - 中间件设置 cors 标头适用于 app.use() 但不适用于特定路由
- c - 如何做三个定点数的乘法和加法
- elasticsearch - Elasticsearch 查询,返回所有内容或找到的命中
- firebase - NoSuchMethodError:在 null 上调用了 getter 数据,接收者:null