我在Win10上用.NET 4.5.2的C++CLI工作。我使用VS2019 16.1.6开发(我知道......)。
我目前正在调试一个应用,在这个应用中进行了以下操作。
System::IO::Compression::ZipFile::CreateFromDirectory()
被称为。请注意,它在大多数时候都能完美地工作。在这个错误中,当 CreateFromDirectory
调用,就会抛出一个IOException,告诉"进程不能访问文件... LOCK,因为它正在被另一个进程使用。"
在这一点上。哨兵 文件LOCK被认为是被删除的。事实上,我用这段代码删除了它。
System::IO::File::Delete( "LOCK" );
while ( System::IO::File::Exists( "LOCK" )
{
System::Threading::Thread::Sleep( 20 );
}
我使用这段代码是因为我已经有了 "没有真正删除 "文件的问题 (而这个问题在进入调试时从未发生过,因为有更大的延迟... ) 但现在,我不知道... ...
我的假设如下。
当... CreateFromDirectory()
开始其工作, 哨兵 文件仍然存在于某个地方(???),并被方法列出。
当要压缩它的时候(或在压缩过程中),它实际上被删除了。因此,异常...
所以我的问题是
先谢谢你的帮助
其实,@HansPassant的评论帮我找到了问题所在。不过锁定LOCK文件的不是反恶意软件,而是应用程序本身。毕竟是简单的工作流程问题... 这个文件,是由一个 FileStream
在特定的工作流路径中从来没有被关闭过disposeddeleted,这个导致了崩溃。
谢谢你的评论。