为何启动两次.NET Core 6控制台应用会出现文件占用错误?
错误原因分析
进程内锁无法跨进程同步
代码中的myAppendLock是进程内部的静态锁对象,仅能约束当前进程内的多线程操作。当你启动两个独立的应用进程时,每个进程都会创建自己的myAppendLock实例,完全无法限制另一个进程对目标CSV文件的访问,这是引发文件占用冲突的核心原因。文件打开的共享权限限制
File.AppendText()方法默认采用的文件共享模式是FileShare.Read,即当一个进程以写入方式打开文件时,其他进程仅能读取该文件,无法执行写入操作。第二个进程尝试追加写入时,就会触发“文件被另一个进程占用无法访问”的错误。
另外补充个小细节:你代码里手动调用的w.Close()和w.Dispose()属于冗余操作,using语句会自动在代码块结束时释放StreamWriter资源,无需手动执行这两个方法,但这不是导致当前错误的原因。
内容的提问来源于stack exchange,提问作者user274610
相关产品推荐
相关产品推荐

