У меня есть текстовый файл, который хранится в сетевом расположении. Этот файл используется в 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 во время этой работы.