From 2429141ce69e21024ac67a95152acaac1ca3cba9 Mon Sep 17 00:00:00 2001 From: where where Date: Tue, 20 Jan 2026 20:10:48 +0800 Subject: [PATCH 1/2] Let MarkdownConfig.Default supports multithreaded --- components/MarkdownTextBlock/src/MarkdownConfig.cs | 4 +++- .../MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs | 2 +- components/MarkdownTextBlock/src/MarkdownThemes.cs | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/components/MarkdownTextBlock/src/MarkdownConfig.cs b/components/MarkdownTextBlock/src/MarkdownConfig.cs index d04187c2d..99508f108 100644 --- a/components/MarkdownTextBlock/src/MarkdownConfig.cs +++ b/components/MarkdownTextBlock/src/MarkdownConfig.cs @@ -11,5 +11,7 @@ public record MarkdownConfig public ISVGRenderer? SVGRenderer { get; set; } public MarkdownThemes Themes { get; set; } = MarkdownThemes.Default; - public static MarkdownConfig Default = new(); + [ThreadStatic] + private static MarkdownConfig? _default; + public static MarkdownConfig Default => _default ??= new MarkdownConfig(); } diff --git a/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs b/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs index 06ad510cc..13afc6307 100644 --- a/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs +++ b/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs @@ -15,7 +15,7 @@ public partial class MarkdownTextBlock nameof(Config), typeof(MarkdownConfig), typeof(MarkdownTextBlock), - new PropertyMetadata(new MarkdownConfig(), OnConfigChanged) + new PropertyMetadata(MarkdownConfig.Default, OnConfigChanged) ); /// diff --git a/components/MarkdownTextBlock/src/MarkdownThemes.cs b/components/MarkdownTextBlock/src/MarkdownThemes.cs index 21393cf21..d38edf660 100644 --- a/components/MarkdownTextBlock/src/MarkdownThemes.cs +++ b/components/MarkdownTextBlock/src/MarkdownThemes.cs @@ -14,7 +14,9 @@ namespace CommunityToolkit.WinUI.Controls; public sealed class MarkdownThemes : DependencyObject { - internal static MarkdownThemes Default { get; } = new(); + [ThreadStatic] + private static MarkdownThemes? _default; + internal static MarkdownThemes Default => _default ??= new MarkdownThemes(); public Thickness Padding { get; set; } = new(8); From 9cdd6e88137e5823b2022860574a24ec4dd04e36 Mon Sep 17 00:00:00 2001 From: where where Date: Thu, 22 Jan 2026 02:10:36 +0800 Subject: [PATCH 2/2] Use CreateDefaultValueCallback to create MarkdownConfig --- .../MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs b/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs index 13afc6307..3307b1c67 100644 --- a/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs +++ b/components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs @@ -15,7 +15,7 @@ public partial class MarkdownTextBlock nameof(Config), typeof(MarkdownConfig), typeof(MarkdownTextBlock), - new PropertyMetadata(MarkdownConfig.Default, OnConfigChanged) + PropertyMetadata.Create(() => MarkdownConfig.Default, OnConfigChanged) ); ///