1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-19 16:40:26 +02:00

Thread protection for project cache

This commit is contained in:
Brian Fiete 2020-09-30 07:39:53 -07:00
parent c58e30e005
commit 41858b3dc5

View file

@ -757,31 +757,17 @@ namespace IDE
public void ClearProjectNameCache()
{
for (var key in mProjectNameMap.Keys)
delete key;
mProjectNameMap.Clear();
using (mMonitor.Enter())
{
for (var key in mProjectNameMap.Keys)
delete key;
mProjectNameMap.Clear();
}
}
public void AddProjectToCache(Project project)
{
void Add(String name, Project project)
{
bool added = mProjectNameMap.TryAdd(name, var keyPtr, var valuePtr);
if (!added)
return;
*keyPtr = new String(name);
*valuePtr = project;
}
Add(project.mProjectName, project);
for (var alias in project.mGeneralOptions.mAliases)
Add(alias, project);
}
public Project FindProject(StringView projectName)
{
if (mProjectNameMap.IsEmpty)
using (mMonitor.Enter())
{
void Add(String name, Project project)
{
@ -791,20 +777,43 @@ namespace IDE
*keyPtr = new String(name);
*valuePtr = project;
}
for (var project in mProjects)
Add(project.mProjectName, project);
for (var project in mProjects)
{
for (var alias in project.mGeneralOptions.mAliases)
Add(alias, project);
}
Add(project.mProjectName, project);
for (var alias in project.mGeneralOptions.mAliases)
Add(alias, project);
}
}
if (mProjectNameMap.TryGetAlt(projectName, var matchKey, var value))
public Project FindProject(StringView projectName)
{
using (mMonitor.Enter())
{
return value;
if (mProjectNameMap.IsEmpty)
{
void Add(String name, Project project)
{
bool added = mProjectNameMap.TryAdd(name, var keyPtr, var valuePtr);
if (!added)
return;
*keyPtr = new String(name);
*valuePtr = project;
}
for (var project in mProjects)
Add(project.mProjectName, project);
for (var project in mProjects)
{
for (var alias in project.mGeneralOptions.mAliases)
Add(alias, project);
}
}
if (mProjectNameMap.TryGetAlt(projectName, var matchKey, var value))
{
return value;
}
}
return null;
}