安全的文件访问方式

最近在学习SharpDevelop源代码,看到一处访问文件的很有美感的代码,特此供大家一起分享:

public sealed class CallbackOnDispose : IDisposable

    {

        Action callback;

        

        public CallbackOnDispose(Action callback)

        {

            if (callback == null)

                throw new ArgumentNullException("callback");

            this.callback = callback;

        }

        

        public void Dispose()

        {

            Action action = Interlocked.Exchange(ref callback, null);

            if (action != null) {

                action();

                #if DEBUG

                GC.SuppressFinalize(this);

                #endif

            }

        }

        

        #if DEBUG

        ~CallbackOnDispose()

        {

            Debug.Fail("CallbackOnDispose was finalized without being disposed.");

        }

        #endif

    }

  此处定义一个实现IDisposable接口的回调方法的类。调用的时候如下:

using (LockPropertyFile())
{
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
    { ms.WriteTo(fs); } }

  

public static IDisposable LockPropertyFile()

        {

            Mutex mutex = new Mutex(false);

            mutex.WaitOne();

            return new CallbackOnDispose(

                delegate {

                    mutex.ReleaseMutex();

                    mutex.Close();

                });

        }

 

 

你可能感兴趣的:(文件)