Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从单独的项目中写入公共文件?_C# - Fatal编程技术网

C# 如何从单独的项目中写入公共文件?

C# 如何从单独的项目中写入公共文件?,c#,C#,如何从单独的项目中写入公共文件? 我在初始化每个项目时创建了TextWriter,然后在整个项目中编写日志 _Writer = TextWriter.Synchronized(new StreamWriter(path)); 当需要写入日志时,我调用: _Writer.WriteLine(line); _Writer.Flush(); 但当第一个项目运行时,第二个项目无法创建TextWriter,然后它的第二个项目不会在公共日志文件中写入任何内容 如何在共享写入模式下为公共路径中的文件创建T

如何从单独的项目中写入公共文件? 我在初始化每个项目时创建了TextWriter,然后在整个项目中编写日志

_Writer = TextWriter.Synchronized(new StreamWriter(path));
当需要写入日志时,我调用:

_Writer.WriteLine(line);
_Writer.Flush();
但当第一个项目运行时,第二个项目无法创建TextWriter,然后它的第二个项目不会在公共日志文件中写入任何内容


如何在共享写入模式下为公共路径中的文件创建TextWriter对象?

如果您需要的是日志记录,则可以使用它来处理所有问题。将记录器创建为一个单独的库,并在您想要的任何项目中使用它们。

一种方法是将TextWriter或任何东西包装到using块中,这将在操作完成后立即关闭文件,尽管您仍可能遇到文件锁定问题。将该代码放入其他组件使用的公共库中。但是,由于另一个进程拥有该文件,您可能仍然会偶尔被锁定。为什么不使用专用的日志库(如log4net或NLog)?虽然您可以安排从多个程序打开一个文件进行写入,但在任何特定时刻,它们都无法共享文件结尾的位置,因此,如果没有高层的协调,他们最终会互相破坏日志。最好是维护单独的日志,并且仅在需要统一的日志视图时合并它们。