본문 바로가기

프로그래밍/C#, WPF, Winform

[C#] 스레드에 안전한 파일 입출력 방법 (Thread safe File I/O)





멀티 스레드로 부터 안전한 파일 입출력 방식 중 가장 쉽고 간편하며 좋은 방식이다.

FileStream과 StreamReader를 이용한 파일 쓰기는 Json 객체를 쓸때 종종 오류가 생긴다.

이유를 알면 댓글 부탁드립니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private object _fileLock = new object();
 
public void SafeWriteFile(string path, string data, Encoding encoding)
{
    try
    {
        lock (_fileLock)
        {
            File.WriteAllText(path, data, encoding);
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
}
 
public string SafeReadFile(string path, Encoding encoding)
{
    try
    {
        lock (_fileLock)
        {
            return File.ReadAllText(path, encoding);
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
    return null;
}
cs