openfiledialog选择文件会占用文件_.NET Framework 之文件占用问题

上次我们谈到了文件流操作的内部调用逻辑和简单使用方法,具体可以参考下面链接。Zaphod:.NET Framework 之文件流操作​zhuanlan.zhihu.com下面我们来深入讨论一下上次的内容,当我们遇到一些复杂情况时,这种简单方法会有一些问题。比如高并发写入时,IO性能跟不上了,程序就会因为文件被另一个线程占用而无法打开,程序就会抛出异常。这时有同学会说,我们把代码段Try Catch...
摘要由CSDN通过智能技术生成

上次我们谈到了文件流操作的内部调用逻辑和简单使用方法,具体可以参考下面链接。

Zaphod:.NET Framework 之文件流操作​zhuanlan.zhihu.com

下面我们来深入讨论一下上次的内容,当我们遇到一些复杂情况时,这种简单方法会有一些问题。比如高并发写入时,IO性能跟不上了,程序就会因为文件被另一个线程占用而无法打开,程序就会抛出异常。这时有同学会说,我们把代码段Try Catch起来,保证不会报错。其实我第一时间也是这样想的,但是如果把错误捕获后该怎么处理呢,延迟几毫秒,再写入一次文件试试?如果程序依然会报错呢?难道要嵌套Try块?

这种情况下大脑会涌现出非常多的方案,最后把想好的方案写成代码后,总会发现新的问题,其实我们应该先考虑是不是我们的日志调用太过频繁,这属于人为创造了高并发情况,如果每次用户的请求都会打开很多次日志文件并写入,那我们应该考虑先将日志收集,再进行统一处理,这样就可以减少IO的请求次数。

当然,面对真正的高并发请求时,我们这里只是消除了一个常数项,对实际请求数N来说,当N逐渐增大时,常数项实际上可以忽略,那我们应该怎么办呢?这里就要介绍一下文件流的共享操作FileShare,以下FileStream构造函数打开/创建一个现有文件,并向其他用户 (读取) 授予读写访问权限。

FileStream fs =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值