public PdfFile(string path) { if (!Settings.UsePdf) { throw new InvalidOperationException("PDF formats are not configured to use."); } lock (lockObject) { if (wrappers.TryGetValue(path, out wrapper)) { wrapper.Count++; } else { wrapper = new WrapperUseCountPair(path); wrappers[path] = wrapper; } } }
private static void TryDisposeWrapper(object data) { try { Thread.Sleep(60000); string path = (string)data; WrapperUseCountPair wrapper; if (wrappers.TryGetValue(path, out wrapper) && wrapper.Count == 0 && !wrapper.Disposed && DateTime.Now - wrapper.LastUsedTime >= TimeSpan.FromSeconds(60)) { lock (lockObject) { if (wrapper.Count == 0 && !wrapper.Disposed) { wrapper.Dispose(); wrappers.Remove(path); } wrapper = null; } } } catch (Exception ex) { Utility.TryLogError(ex); throw; } }