Пример #1
0
        public bool TryGetImage(Info info, out RendererResult?result)
        {
            result = null;

            var filePath = Path.Combine(CacheDirectory, info.GetFileName());

            try
            {
                mutex.WaitOne();

                var filePathTxt = filePath + ".txt";
                var filePathPng = filePath + ".png";

                if (!File.Exists(filePathTxt) || !File.Exists(filePathPng))
                {
                    return(false);
                }

                if (info.ToString() != File.ReadAllText(filePathTxt))
                {
                    return(false);                                                  //hash conflict
                }
                var source = ResourcesManager.CreateBitmapSourceWithCurrentDpi(filePathPng);
                result = new RendererResult(source, filePathPng, Array.Empty <string>());
                return(true);
            }
            finally
            {
                mutex.ReleaseMutex();
            }
        }
#pragma warning disable VSTHRD100 // Avoid async void methods
        private async void ImageIsReady(RendererResult result)
        {
            await Microsoft.VisualStudio.Shell.ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            RenderedResult = result;
            if (CurrentState == TeXCommentAdornmentState.Rendering)
            {
                CurrentState = TeXCommentAdornmentState.Rendered;
            }
            else if (CurrentState == TeXCommentAdornmentState.EditingAndRenderingPreview)
            {
                CurrentState = TeXCommentAdornmentState.EditingWithPreview;
            }
        }