Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }