博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安全的文件访问方式
阅读量:5985 次
发布时间:2019-06-20

本文共 1350 字,大约阅读时间需要 4 分钟。

最近在学习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();                });        }

 

 

转载于:https://www.cnblogs.com/Johnnie/p/3768590.html

你可能感兴趣的文章
String、StringBuffer和StringBuilder
查看>>
Linux系统动态IP地址的获取和静态IP地址的配置
查看>>
L-1-13 Linux之vim编辑器
查看>>
RabbitMQ(四)
查看>>
selenium之网络配置
查看>>
shell之特殊字符
查看>>
iSCSI网络存储技术-实例解读
查看>>
CentOS7 LVM添加硬盘及扩容
查看>>
基于HTML5树组件延迟加载技术实现
查看>>
Linux系统下的Nginx的日志设置
查看>>
在Linux系统如何让程序开机时自动启动
查看>>
jenkins 升级 和 jenkins备份
查看>>
【NoSQL】抛弃VIP构建MongoDB RepSet +Consul高可用切换系统
查看>>
修复windows10应用商店的问题
查看>>
您的邮件安全吗——使用mailbag获取邮件内容
查看>>
Visual Studio 2017 插件扩展
查看>>
一个ECS上自建Oracle数据库的案例的相关实践
查看>>
调整vmware虚拟机硬盘空间大小
查看>>
yum使用之小练习
查看>>
杀死linux的僵尸进程
查看>>