diff --git a/src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs b/src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
index f64488125f5a..ce9d8a443f7e 100644
--- a/src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
+++ b/src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandlerControl.cs
@@ -3,11 +3,8 @@
// See the LICENSE file in the project root for more information.
using System;
-using System.Diagnostics;
using System.Drawing;
using System.IO;
-using System.Linq;
-using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Common;
@@ -73,28 +70,29 @@ public MarkdownPreviewHandlerControl()
/// Path to the file.
public override void DoPreview(T dataSource)
{
- this.InvokeOnControlThread(() =>
+ this.infoBarDisplayed = false;
+
+ try
{
- try
+ if (!(dataSource is string filePath))
{
- this.infoBarDisplayed = false;
-
- StringBuilder sb = new StringBuilder();
- string filePath = dataSource as string;
- string fileText = File.ReadAllText(filePath);
- this.extension.BaseUrl = Path.GetDirectoryName(filePath);
+ throw new ArgumentException($"{nameof(dataSource)} for {nameof(MarkdownPreviewHandler)} must be a string but was a '{typeof(T)}'");
+ }
- Regex rgx = new Regex(@"<[ ]*img.*>");
- if (rgx.IsMatch(fileText))
- {
- this.infoBarDisplayed = true;
- }
+ string fileText = File.ReadAllText(filePath);
+ Regex imageTagRegex = new Regex(@"<[ ]*img.*>");
+ if (imageTagRegex.IsMatch(fileText))
+ {
+ this.infoBarDisplayed = true;
+ }
- MarkdownPipeline pipeline = this.pipelineBuilder.Build();
- string parsedMarkdown = Markdown.ToHtml(fileText, pipeline);
- sb.AppendFormat("{0}{1}{2}", this.htmlHeader, parsedMarkdown, this.htmlFooter);
- string markdownHTML = sb.ToString();
+ this.extension.BaseUrl = Path.GetDirectoryName(filePath);
+ MarkdownPipeline pipeline = this.pipelineBuilder.Build();
+ string parsedMarkdown = Markdown.ToHtml(fileText, pipeline);
+ string markdownHTML = $"{this.htmlHeader}{parsedMarkdown}{this.htmlFooter}";
+ this.InvokeOnControlThread(() =>
+ {
this.browser = new WebBrowserExt
{
DocumentText = markdownHTML,
@@ -109,24 +107,30 @@ public override void DoPreview(T dataSource)
if (this.infoBarDisplayed)
{
this.infoBar = this.GetTextBoxControl(Resources.BlockedImageInfoText);
+ this.Resize += this.FormResized;
this.Controls.Add(this.infoBar);
}
+ });
- this.Resize += this.FormResized;
- base.DoPreview(dataSource);
- MarkdownTelemetry.Log.MarkdownFilePreviewed();
- }
- catch (Exception e)
+ MarkdownTelemetry.Log.MarkdownFilePreviewed();
+ }
+ catch (Exception e)
+ {
+ MarkdownTelemetry.Log.MarkdownFilePreviewError(e.Message);
+
+ this.InvokeOnControlThread(() =>
{
- MarkdownTelemetry.Log.MarkdownFilePreviewError(e.Message);
+ this.Controls.Clear();
this.infoBarDisplayed = true;
this.infoBar = this.GetTextBoxControl(Resources.MarkdownNotPreviewedError);
this.Resize += this.FormResized;
- this.Controls.Clear();
this.Controls.Add(this.infoBar);
- base.DoPreview(dataSource);
- }
- });
+ });
+ }
+ finally
+ {
+ base.DoPreview(dataSource);
+ }
}
///