当前位置: 首页 > article >正文

C# 多线程操作同一个文件,如何避免冲突

1 使用lock

经测试,依然存在线程冲突
private static object locker = new object();
……
lock (locker)
{
		string bText = File.ReadAllText(FPath);
		return bText;
}
……
lock (locker)
{
		File.WriteAllText(FPath, aContent);
}

2 使用ReaderWriterLockSlim

经测试,依然存在线程冲突
private static ReaderWriterLockSlim FSlim = new ReaderWriterLockSlim();
……
FSlim.EnterReadLock();
string bText = File.ReadAllText(FPath);
FSlim.ExitReadLock();
return bText;
……
FSlim.EnterWriteLock();
File.WriteAllText(FPath, aContent);
FSlim.ExitWriteLock();

http://www.kler.cn/a/299542.html

相关文章:

  • Ubuntu 18.04安装Emacs 26.2问题解决
  • 线段树(Segment Tree)和树状数组
  • Agent 高频知识汇总:查漏补缺参考大全
  • 每日一题——序列化二叉树
  • 【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?
  • python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
  • FFCD:森林火灾分类数据集(猫脸码客 第184期)
  • 解决python报错:AttributeError: module ‘matplotlib.cm‘ has no attribute ‘spectral‘
  • 基于YOLOv8的风力涡轮机表面损坏检测系统
  • Linux和C语言(Day10)
  • NVDLA专题14:Runtime environment-用户模式驱动
  • 美客多自养号怎么测?看看这个专业指南和深度分析吧!
  • 【题目】数据分析与数据思维选择题
  • 【Kubernetes】常见面试题汇总(七)
  • Android解析JSON格式数据
  • Uniapp + Vite + Vue3 + uView + Pinia 实现自定义底部 Tabbar(最新保姆级教程)
  • 大语言模型 (LLM) 窥探未来
  • 微服务实战系列之玩转Docker(十四)
  • 数组与贪心算法——215、75、324、517(3中1难)
  • Unity 之如何实现基于OpenAI的ChatGPT的聊天机器人
  • 基于SpringBoot+Vue的考务管理系统
  • 蓝牙驱动开发详解
  • GitLab CI Runner安装
  • 【编程入门】与7无关的数?
  • Unet改进24:添加DualConv||轻量级深度神经网络的双卷积核
  • windows中多ping网络ICMP