Ensure more ReaderWriterLockSlim are disposed or converted

This commit is contained in:
Shannon
2021-04-20 17:56:55 +10:00
parent 7e332b23c9
commit bf7a3251d8
6 changed files with 101 additions and 30 deletions

View File

@@ -21,7 +21,7 @@ using File = System.IO.File;
namespace Umbraco.ModelsBuilder.Embedded
{
internal class PureLiveModelFactory : ILivePublishedModelFactory2, IRegisteredObject
internal class PureLiveModelFactory : ILivePublishedModelFactory2, IRegisteredObject, IDisposable
{
private Assembly _modelsAssembly;
private Infos _infos = new Infos { ModelInfos = null, ModelTypeMap = new Dictionary<string, Type>() };
@@ -33,6 +33,7 @@ namespace Umbraco.ModelsBuilder.Embedded
private int _ver, _skipver;
private readonly int _debugLevel;
private BuildManager _theBuildManager;
private bool _disposedValue;
private readonly Lazy<UmbracoServices> _umbracoServices; // fixme: this is because of circular refs :(
private UmbracoServices UmbracoServices => _umbracoServices.Value;
@@ -677,11 +678,31 @@ namespace Umbraco.ModelsBuilder.Embedded
public void Stop(bool immediate)
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
Dispose();
HostingEnvironment.UnregisterObject(this);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposedValue)
{
if (disposing)
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
_locker.Dispose();
}
_disposedValue = true;
}
}
public void Dispose()
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
}
#endregion
}
}