C#创建.txt文件提示正由另一进程使用,因此该进程无法访问此文件。

weixin_38668767 2017-11-10 10:43:07
本人C#初学者一枚,如图,当我每次要创建.TXT文件时,System.IO.File.AppendText那行就会报错,文件被另一线程占用
...全文
1932 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyDuang 2018-09-12
  • 打赏
  • 举报
回复 1
引用 1 楼 qq_25219331 的回复:
File.Create(filepath).Close();
感谢,解决了我的问题
weixin_38668767 2017-11-25
  • 打赏
  • 举报
回复
引用 4 楼 qq_25095899 的回复:
你这个代码有不太合理的地方 你用yyyyMMdd 做为文件名,然后又sleep 50 ,然后又继续用yyyyMMdd (而不是用之前的文件名) 假设 2017年11月12日 晚上23点59分59秒960毫秒 ,结果你sleep后,变成2017年11月13日了, 两个不同的文件了。 File.AppendAllText 是----“如果文件不存在的话 ,会自动创建”,所以你不需要做 “是否存在TXT,如果不存在就先创建 ” 的判断 你应该直接使用File.AppendAllText,不用那么麻烦
谢谢,已解决,忘记评论
njit_77 2017-11-13
  • 打赏
  • 举报
回复
应该是别的线程同时往里面写信息了。多线程不加锁容易出错
大然然 2017-11-13
  • 打赏
  • 举报
回复
你这个代码有不太合理的地方 你用yyyyMMdd 做为文件名,然后又sleep 50 ,然后又继续用yyyyMMdd (而不是用之前的文件名) 假设 2017年11月12日 晚上23点59分59秒960毫秒 ,结果你sleep后,变成2017年11月13日了, 两个不同的文件了。 File.AppendAllText 是----“如果文件不存在的话 ,会自动创建”,所以你不需要做 “是否存在TXT,如果不存在就先创建 ” 的判断 你应该直接使用File.AppendAllText,不用那么麻烦
Vito1993 2017-11-10
  • 打赏
  • 举报
回复
File.Create(filepath).Close();
白衣如花 2017-11-10
  • 打赏
  • 举报
回复
要看你的zisuo这个变量是否是静态的,即是否能保证每次判断的zisuo是否是同一个东西。 而且如果当前zisuo为false,你是否能等一下再写? 写日志一般用静态枷锁的方法,或者单独线程处理日志队列
c02645 2017-11-10
  • 打赏
  • 举报
回复
using (StreamWriter sw = new StreamWriter(txtPath, true, Encoding.Default)) { sw.WriteLine("追加记录------"); sw.Dispose(); sw.Close(); }

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧