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

@@ -79,19 +79,27 @@ namespace PepperDash.Essentials.Core
{ {
try try
{ {
DirectoryInfo dirInfo = new DirectoryInfo(file.Name); if (fileLock.TryEnter())
Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
if (File.Exists(file.FullName))
{ {
using (StreamReader r = new StreamReader(file.FullName)) DirectoryInfo dirInfo = new DirectoryInfo(file.Name);
Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
if (File.Exists(file.FullName))
{ {
return r.ReadToEnd(); using (StreamReader r = new StreamReader(file.FullName))
{
return r.ReadToEnd();
}
}
else
{
Debug.Console(2, "File {0} does not exsist", file.FullName);
return "";
} }
} }
else else
{ {
Debug.Console(2, "File {0} does not exsist", file.FullName); Debug.Console(0, Debug.ErrorLogLevel.Error, "FileIO Unable to enter FileLock");
return ""; return "";
} }
@@ -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();
}
} }
@@ -133,23 +147,30 @@ namespace PepperDash.Essentials.Core
string data; string data;
try try
{ {
DirectoryInfo dirInfo = new DirectoryInfo(file.Name); if (fileLock.TryEnter())
Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
if (File.Exists(file.FullName))
{ {
using (StreamReader r = new StreamReader(file.FullName)) DirectoryInfo dirInfo = new DirectoryInfo(file.Name);
Debug.Console(2, "FileIO Getting Data {0}", file.FullName);
if (File.Exists(file.FullName))
{ {
data = r.ReadToEnd(); using (StreamReader r = new StreamReader(file.FullName))
{
data = r.ReadToEnd();
}
} }
else
{
Debug.Console(2, "File {0} Does not exsist", file.FullName);
data = "";
}
GotFileEvent.Invoke(null, new FileEventArgs(data));
} }
else else
{ {
Debug.Console(2, "File {0} Does not exsist", file.FullName); Debug.Console(0, Debug.ErrorLogLevel.Error, "FileIO Unable to enter FileLock");
data = "";
} }
GotFileEvent.Invoke(null, new FileEventArgs(data));
} }
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();
}