.net - 使用 ZipFile::CreateFromDirectory() 在 C++/CLI 中压缩时删除的文件生成异常?
问题描述
我在 Win10 上使用 .NET 4.5.2 使用 C++/CLI。我用 VS2019 16.1.6 开发(我知道...)
我目前正在调试一个完成以下操作的应用程序:
- 在给定目录中创建哨兵LOCK 文件。
- 一些工作已经完成。
- 哨兵文件LOCK被删除。
- 然后
System::IO::Compression::ZipFile::CreateFromDirectory()
被调用。请注意,它在大多数情况下都能完美运行。
在这个错误中,当CreateFromDirectory
被调用时,会抛出一个 IOException 告诉“进程无法访问文件...锁定,因为它正在被另一个进程使用。 ”
此时,假定已删除哨兵文件LOCK。实际上我使用以下代码删除了它:
System::IO::File::Delete( "LOCK" );
while ( System::IO::File::Exists( "LOCK" )
{
System::Threading::Thread::Sleep( 20 );
}
我使用这个片段是因为我已经遇到了“未真正删除”文件的问题(而由于延迟更大,在单步调试时不会出现这个问题......)但是现在,我不知道......
我的假设如下:
当
CreateFromDirectory()
开始其工作时,哨兵文件仍然存在于某个地方(???)并由方法列出。当需要压缩它时(或在压缩过程中),它实际上被删除了。因此例外...
所以我的问题是:
- 我的假设可能吗?
- 有没有办法保护执行(工作流程)不受此影响?
- 还有什么想法吗?
在此先感谢您的帮助!
解决方案
实际上,@HansPassant 的评论帮助我找到了问题所在。但锁定文件 LOCK 的不是反恶意软件,而是应用程序本身。毕竟简单的工作流问题......由 a 创建的文件FileStream
从未在特定的工作流路径中关闭/处置/删除,这会导致崩溃。
谢谢你的评论。
推荐阅读
- r - 当响应已经是有序因子时,R 显示“getY(fullmf) 中的错误:响应需要成为一个因子”
- python - Python 发送 POST 请求/multipart/form-data
- r - 基于删除行的多个标准子集数据框
- php - PHP:在静态函数中获取派生类上下文?即 BaseClass::staticBaseFunc() 与 DerivedClass::staticBaseFunc() 之间的区别
- angular - 地理位置不断在我的角度应用程序中调用
- batch-file - 如何将一个字符串批量拆分为多个不同的变量
- java - 连接字符串中的 Spring Profiles
- python - 如何更改 Altair boxplot 信息框以显示平均值而不是中位数?
- spring-boot - 仅当存在 @EnableScheduling 时才制作 bean
- java - 我如何创造一个条件,可以结合计划中的上述计划,并添加他们的价格?