Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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#,我试图使用下面给出的代码创建一个日志文件,但它抛出 进程无法访问文件,因为另一个进程正在使用该文件 代码如下: string logFile = System.IO.Directory.GetCurrentDirectory() + "\\LogFile\\" + DateTime.Now.ToString("dd-MM-yyyy") + "TaskLogFile.txt"; StreamWriter LogWriter; try { i

我试图使用下面给出的代码创建一个日志文件,但它抛出

进程无法访问文件,因为另一个进程正在使用该文件

代码如下:

string logFile = System.IO.Directory.GetCurrentDirectory() + "\\LogFile\\" + DateTime.Now.ToString("dd-MM-yyyy") + "TaskLogFile.txt";

      StreamWriter LogWriter;
      try
      {
          if (!File.Exists(logFile))
          {
              LogWriter = new StreamWriter(logFile);
              Console.WriteLine("Log File Created...");
          }
          else
          {
              LogWriter = File.AppendText(logFile);
              Console.WriteLine("Log File Appended...");
          }

          if (EX == null)
          {
              LogWriter.Write("\r\nLog Entry : ");
              LogWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString());
              LogWriter.WriteLine("\nTask Id = {0} , Task Name = {1}, Service Name = {2} ", TaskId, TaskName, ServiceName);
              LogWriter.WriteLine("-----------------------------------------------------------------------------------------------------");
              LogWriter.Close();
          }

          else
          {
              LogWriter.WriteLine("\n Error : {0}, Error Location : {1},Task ID = {2}, Task Name : {3}, Service Name : {4} " + EX.ToString(), EX.StackTrace, TaskId, TaskName, ServiceName);
          }
      }

      catch (Exception ex)
      {

          LogWriter = File.AppendText(logFile);
          LogWriter.WriteLine("\n Error : {0}, Error Location : {1},Task ID = {2}, Task Name : {3}, Service Name : {4} " + ex.ToString(), Environment.StackTrace, TaskId, TaskName, ServiceName);

      }

另外,我正在用其他异步方法调用此方法。

您的问题是日志文件可能被另一个进程锁定,或者如果是异步的,则被同一进程锁定

这是日志文件的典型问题,使用
FileShare.ReadWrite

File.Open(logFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)

您的问题是日志文件可能被另一个进程锁定,或者被同一个进程锁定(如果它是异步的)

这是日志文件的典型问题,使用
FileShare.ReadWrite

File.Open(logFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)

该文件必须已存在并具有独占写入锁。尝试使用共享写访问权限打开文件。文件必须已经存在并且具有独占写锁。尝试使用共享写访问打开文件。我还建议使用“using”语句。处理流的唯一地方是if EX为null。我按照您的建议进行了必要的更改,但它不起作用。请相应地更新您的代码,然后我会看一看。我还建议使用“using”语句。处理流的唯一位置是if EX为null。我按照您的建议进行了必要的更改,但它不起作用。请相应地更新您的代码,然后我会查看。