File Write 시에 모니터링 및 끝나면 다음 동작 수행

Posted by RAY.D
2015. 11. 11. 17:08 Language/C#
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



파일에 Write 작업을 할때


그 Write 가 다 끝난 다음에 다음 동작을 수행하는 기법


파일에 Write가 될때는 Lock되는 성질을 이용하여 구현한다.



    void AwaitFile()
    {
        //Your File
        var file  = new FileInfo("yourFile");

        //While File is not accesable because of writing process
        while (IsFileLocked(file)) { }

        //File is available here

    }

    /// <summary>
    /// Code by ChrisW -> http://stackoverflow.com/questions/876473/is-there-a-way-to-check-if-a-file-is-in-use
    /// </summary>
    protected virtual bool IsFileLocked(FileInfo file)
    {
        FileStream stream = null;

        try
        {
            stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
        }
        catch (IOException)
        {
            return true;
        }
        finally
        {
            if (stream != null)
                stream.Close();
        }

        //file is not locked
        return false;
    }