private void HandleRadsServiceSuspending(object sender, EventArgs eventArgs) { LoadingOperation(() => { logger.Info("Suspending LoL File System " + this.projectType); foreach (var kvp in handlesByNode) { var handle = kvp.Value; suspendedHandleContexts.Add(new SuspendedHandleContext(handle.Node.GetPath(), handle)); handle.BeginReset(); } handlesByNode.Clear(); // Free reference to project so that rads service can free file handle if (projectReference != null) { projectReference.Dispose(); projectReference = null; } foreach (var kvp in archiveReferencesById) { foreach (var reference in kvp.Value) { reference.Dispose(); } } archiveReferencesById.Clear(); }); }
// Assumes thread safety from ReadOperation private RiotProject GetProject() { if (projectReference == null) { lock (initializationLock) { if (projectReference == null) { projectReference = radsService.GetProjectReference(projectType); } } } return(projectReference.Value); }