[Mono-list] File Locking

Andy York andy at brdstudio.net
Wed Feb 17 15:17:06 UTC 2016

Have you tried checking out other project in GitHub or CodePlex? I've 
gotten some really good tips from reading other cross-platform code that 
deals with locking files. Just a suggestion.

 From: "Edward Ned Harvey (mono)" <edward.harvey.mono at clevertrove.com>
Sent: Wednesday, February 17, 2016 9:46 AM
To: "shrimpywu" <shrimpywu at hotmail.com>, "mono-list at lists.ximian.com" 
<mono-list at lists.ximian.com>
Subject: Re: [Mono-list] File Locking   
> From: mono-list-bounces at lists.ximian.com [mailto:mono-list-
> bounces at lists.ximian.com] On Behalf Of shrimpywu
> i have the same issue. any solution?

Kinda sorta. The underlying issue is that OSX, Linux, and Windows all have 
different underlying file locking constructs, and then of course, there's 
some variability about even *which* filesystem is being used. I didn't 
thoroughly figure out all the answers for every OS or filesystem, and I 
don't know under which situations this will be good enough, but this is 
what I ended up using, works under the conditions we needed it to work:

using (var foo = new FileStream(filePath, FileMode.Open, 
FileAccess.ReadWrite, FileShare.None)) { // must include Write access in 
order to lock file
foo.Lock(0, 0); // 0,0 has special meaning to lock entire file regardless 
of length

For windows, simply specifying the FileAccess and FileShare is good enough. 
For linux, at least ext4, files are concurrently readable regardless of 
what you specify for FileAccess and FileShare. The Lock() method does 
something of a soft-lock. It's not enforced by the OS, but at least all the 
situations we tried, other client apps honor the lock. Didn't look into it 
any deeper.
Mono-list maillist - Mono-list at lists.ximian.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20160217/c20f4eb6/attachment.html>

More information about the Mono-list mailing list