另一个程序正在使用此文件,进程无法访问

rainychan2009 2011-07-28 09:28:21
请教这种问题的解决方案如何呢?
就是多个地方需要写日志,我把日志功能放在一个类中完成,写日志的时候就用类变量调用其方法来写日志的,但是程序有时候会提示异常,异常的内容如题!
...全文
902 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainychan2009 2011-07-31
  • 打赏
  • 举报
回复
一个程序里面,有多个线程类,很多地方都需要写日志,不同类型的操作调用不同的写日志的方法,现在的问题是有的时候出现“不显示删除回复显示所有回复显示星级回复显示得分回复 另一个程序正在使用此文件,进程无法访问”的异常,本来正常的程序就因为写日志这种事情给报个异常肯定是无法接受。
各种类型的日志我放在一个类中进行管理,需要写日志的时候,我就用调用这个类中的方法,日志写的很频繁,有时候就会出现这种错误,写日志打开文件的模式是: TFileStream.Create(FileName, fmOpenReadWrite or fmShareDenyWrite)这样够不够?需要将其放进一个锁里面?
另外,我想过,如果一个日志文件正在被别人用,我就放弃这次写日志的机会,避免这种异常,但是效果好像不好!
rainychan2009 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sim_might5 的回复:]

如果不怕对方出错的话,倒是有个很简单的非常规处理办法。算是Win的一个BUG吧。
[/Quote]
都是对等的,都是要输出Log的地方需要的,当然不能出错了。
sim_might5 2011-07-28
  • 打赏
  • 举报
回复
如果不怕对方出错的话,倒是有个很简单的非常规处理办法。算是Win的一个BUG吧。
rainychan2009 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinoalex 的回复:]

fmShareDenyWrite 就是不让写
[/Quote]
这个应该是不让别人同时写吧?
dinoalex 2011-07-28
  • 打赏
  • 举报
回复
或者可以考虑写到操作系统的日志里, 或注册表也行
dinoalex 2011-07-28
  • 打赏
  • 举报
回复
fmShareDenyWrite 就是不让写
rainychan2009 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gyk120 的回复:]

确保你写的时候都是独占方式打开的,或者用互斥对象
[/Quote]
TFileStream.Create(FileName, fmOpenReadWrite or fmShareDenyWrite)这样够不够?需要将其放进一个锁里面?
gyk120 2011-07-28
  • 打赏
  • 举报
回复
确保你写的时候都是独占方式打开的,或者用互斥对象

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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