alphaleonis / AlphaFS

AlphaFS is a .NET library providing more complete Win32 file system functionality to the .NET platform than the standard System.IO classes.
http://alphafs.alphaleonis.com/
MIT License
558 stars 99 forks source link

Directory.Exists not consistent with System.IO.Directory.Exists #493

Open tw17 opened 5 years ago

tw17 commented 5 years ago

Hi, I am having an issue with the latest version of AlphaFS where the result of Directory.Exists is not accurate, or at least not consistent with the result of System.IO.Directory.Exists

In my code I am doing the following

Problem: Alphaleonis.Win32.Filesystem.Directory.Exists returns false even though the directory still exists (has been marked for deletion by Windows, but is yet to be deleted) When attempting to do a Directory.Create I get a System.UnauthorizedAccessException as the folder hasn't been removed. If I rely on System.IO.Directory.Exists, I don't see this problem as it only returns false when the directory has been completely removed.

This issue is quite tricky to reproduce as you need some sort of handle on the directory you are attempting to delete, such as having it open in Windows Explorer. The handle on the directory doesn't prevent it from being deleted, it just makes it so there is a slight delay between being marked for deletion and the actual deletion.

I do not see this issue in AlphaFS 2.1.3 it only happens in version >= 2.2

I can try and put together a proof of concept for the issue, I just wanted to see if maybe this was already a known issue, or if there is potentially a work around.

Yomodo commented 5 years ago

There have been a few issues about this: #166, #216 and #288.

Currently there are a couple of unit tests, but we welcome any additional unit tests on this.

tw17 commented 5 years ago

I have added a unit test that shows this behavior pull/495

rhollins commented 5 years ago

Wonder if you have any update on that as it seems we cant update octopus deploy because of this problem