2015-01-27 4 views
0

Faillog 클래스에서 "다른 프로세스에서이 오류가 사용 중입니다."오류가 발생합니다. 그 코드는 다음과 같습니다. Log 메서드에서 "using (StreamWriter sw = new StreamWriter (path + file, true))"행에서 발생합니다. 파일에 액세스하는 것으로 보이는 것이 없기 때문에 내가 뭘 잘못하고 있는지 전혀 알지 못합니다. 프로그램이 처음 실행될 때 클래스의 인스턴스가 생성되고 2 초 후에 다른 프로세스에 의해 사용되는 것이기 때문에 불가능한 것처럼 보입니다. 이 오류의 원인을 파악하는 데 도움을 드리고 싶습니다.C# - 로그 클래스 IO 예외

class Faillog 
{ 
    #region Private Variables 
    //The location of the Faillog file. 
    private string path; 

    //The name of the file used for marking failures. 
    private string file; 
    #endregion 

    #region Constructor 
    public Faillog(string p = @"C:\RH Faillog\", string f = "default") 
    { 
     path = p; 
     if (!Directory.Exists(path)) 
     { 
      Directory.CreateDirectory(path); 
     } 

     if (f == "default") 
     { 
      file = "Faillog_" + DateTime.Now.ToShortDateString().Replace("/", "-") + ".txt"; 
     } 
     else 
     { 
      file = f; 
     } 

     if (!File.Exists(path + file)) 
     { 
      File.Create(path + file); 
     } 
    } 
    #endregion 

    #region Getters 
    public string GetPath() 
    { 
     return path; 
    } 

    public string GetFile() 
    { 
     return file; 
    } 
    #endregion 

    #region Public Methods 
    //Logs a fail record into the file. 
    public void Log(string name) 
    { 
     using (StreamWriter sw = new StreamWriter(path + file, true)) 
     { 
      sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt") + ": " + name + " failed."); 
     } 
    } 
    #endregion 
+0

http://superuser.com/questions/140643/how-to-get-the-names-of-the-programs-which-are-accessing-a-fail-file-folder-a –

+1

스트림을 닫으십시오. – Bobby

+1

나는 괄호 안에있는 것이 무엇이든간에 자동으로 사용하는 메소드를 삭제한다고 생각했습니다. 그것은 다른 경우에 저를 위해 일해 왔습니다. – 11clock

답변

0

File.Create, 당신은 무시됩니다 FileStream을 반환합니다.

어쨌든 명시 적으로 파일을 만들 필요는 없습니다. StreamWriter이 없으면 파일을 만들어야합니다.

+0

생성자에서 해당 비트를 삭제하는 것이 효과적입니다. 감사! 이것은 앞으로 유용 할 것입니다. – 11clock

1

파일을 닫아야합니다. 기본 파일 핸들을 적시에 출시하고 닫으면 점점되지 않도록

file.Flush(); 
    file.Close(); 
+0

어디서? 'file'은 파일 이름을 나타내는 문자열입니다. –