첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형
using System.IO;
using System.Runtime.InteropServices;

#region 파일 잠금 여부 구하기 - IsFileLocked(filePath, waitTime)

/// <summary>
/// 파일 잠금 여부 구하기
/// </summary>
/// <param name="filePath">파일 경로</param>
/// <param name="waitTime">대기 시간 (단위 : 초)</param>
/// <returns>파일 잠금 여부</returns>
public bool IsFileLocked(string filePath, int waitTime)
{
    bool isLocked = true;

    int i = 0;

    while(isLocked && ((i < waitTime) || (waitTime == 0)))
    {
        try
        {
            using(File.Open(filePath, FileMode.Open))
            {
            }

            return false;
        }
        catch(IOException exception)
        {
            int errorCode = Marshal.GetHRForException(exception) & ((1 << 16) - 1);

            isLocked = errorCode == 32 || errorCode == 33;

            i++;

            if(waitTime != 0)
            {
                new System.Threading.ManualResetEvent(false).WaitOne(1000);
            }
        }
    }

    return isLocked;
}

#endregion
728x90
반응형
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요