■ 파일 잠금 여부 구하기

------------------------------------------------------------------------------------------------------------------------

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

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요