feature: add fileLock for reads

This commit is contained in:
Jason Alborough
2022-04-19 15:19:27 -04:00
parent 33c7038d99
commit f902a57f60

View File

@@ -78,6 +78,8 @@ namespace PepperDash.Essentials.Core
public static string ReadDataFromFile(FileInfo file) public static string ReadDataFromFile(FileInfo file)
{ {
try try
{
if (fileLock.TryEnter())
{ {
DirectoryInfo dirInfo = new DirectoryInfo(file.Name); DirectoryInfo dirInfo = new DirectoryInfo(file.Name);
Debug.Console(2, "FileIO Getting Data {0}", file.FullName); Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
@@ -94,6 +96,12 @@ namespace PepperDash.Essentials.Core
Debug.Console(2, "File {0} does not exsist", file.FullName); Debug.Console(2, "File {0} does not exsist", file.FullName);
return ""; return "";
} }
}
else
{
Debug.Console(0, Debug.ErrorLogLevel.Error, "FileIO Unable to enter FileLock");
return "";
}
} }
catch (Exception e) catch (Exception e)
@@ -101,6 +109,12 @@ namespace PepperDash.Essentials.Core
Debug.Console(0, Debug.ErrorLogLevel.Error, "Error: FileIO read failed: \r{0}", e); Debug.Console(0, Debug.ErrorLogLevel.Error, "Error: FileIO read failed: \r{0}", e);
return ""; return "";
} }
finally
{
if (fileLock != null && !fileLock.Disposed)
fileLock.Leave();
}
} }
@@ -132,6 +146,8 @@ namespace PepperDash.Essentials.Core
{ {
string data; string data;
try try
{
if (fileLock.TryEnter())
{ {
DirectoryInfo dirInfo = new DirectoryInfo(file.Name); DirectoryInfo dirInfo = new DirectoryInfo(file.Name);
Debug.Console(2, "FileIO Getting Data {0}", file.FullName); Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
@@ -150,6 +166,11 @@ namespace PepperDash.Essentials.Core
data = ""; data = "";
} }
GotFileEvent.Invoke(null, new FileEventArgs(data)); GotFileEvent.Invoke(null, new FileEventArgs(data));
}
else
{
Debug.Console(0, Debug.ErrorLogLevel.Error, "FileIO Unable to enter FileLock");
}
} }
catch (Exception e) catch (Exception e)
@@ -157,6 +178,12 @@ namespace PepperDash.Essentials.Core
Debug.Console(0, Debug.ErrorLogLevel.Error, "Error: FileIO read failed: \r{0}", e); Debug.Console(0, Debug.ErrorLogLevel.Error, "Error: FileIO read failed: \r{0}", e);
data = ""; data = "";
} }
finally
{
if (fileLock != null && !fileLock.Disposed)
fileLock.Leave();
}