Как мне прочитать файл без сбоев AutoCAD? - PullRequest
1 голос
/ 03 февраля 2020

У меня есть текстовый файл, который хранится в сетевом расположении. Этот файл используется в AutoCAD для некоторых целей. В некоторых случаях возникает проблема, когда два пользователя одновременно запрашивают этот файл, и один пользователь получает доступ, в то время как для второго пользователя происходит сбой AutoCAD, поскольку файл используется другим пользователем. Чтобы предотвратить это, мы начали копировать файлы в папку Appdata и сделали это.

  internal string GetProjectLocation()
  {
    string strNetworkPath= "XXXX.com\Workdirs\Private\Projects.txt";
    return GetValidPath(strNetworkPath);
  }

private string GetValidPath(string strFullPath)
{
    string strLocalPath = Environment.GetEnvironmentVariable("AppData") + @"\Acad-Data\";
    string strFileName = Path.GetFileName(strFullPath);
    if (!FileInUse(strFullPath))
    {
        return strFullPath;     
    }

    string strLocalFilePath= strLocalPath + strFileName;
    if (File.Exists(strLocalFilePath))
        return strLocalFilePath;

    return strFullPath;
}

internal bool FileInUse(string sFile)
{
    bool rtnValue = false;

    try
    {
        using (System.IO.FileStream f = new System.IO.FileStream(sFile, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None))
        {
            rtnValue = false;
        }
    }
    catch (System.Exception)
    {
        rtnValue = true;
    }
    return rtnValue;
}`

Но даже после этого программа все равно вылетает с той же ошибкой, что и

Система. IO.IOException: процесс не может получить доступ к файлу "\ XXXX.com \ Workdirs \ Private \ Projects.txt", поскольку он используется другим процессом.

Обратите внимание, что я убедился, что файл существует в папке Appdata. Что я должен сделать, чтобы предотвратить AutoCAD cra sh во время этой работы.

...