I am trying to add a Paragraph to a RichTextBox control from another thread and my app crashes as soon as I try to do that
.Net Core 3.1
This is my Extensions source
public static class ParagraphExtention
    {
        public static void Append(this Paragraph paragraph, string value = "", Brush background = null, Brush foreground = null, bool bold = false, bool italic = false, bool underline = false, bool waitUntilReturn = false)
        {
            Action append = () =>
            {
                Inline run = new Run(value);
                if (background != null) run.Background = background;
                if (foreground != null) run.Foreground = foreground;
                if (bold) run = new Bold(run);
                if (italic) run = new Italic(run);
                if (underline) run = new Underline(run);
                paragraph.Inlines.Add(run);
            };
            if (paragraph.CheckAccess())
            {
                append();
            }
            else if (waitUntilReturn)
            {
                paragraph.Dispatcher.Invoke(append);
            }
            else
            {
                paragraph.Dispatcher.BeginInvoke(append);
            }
        }
    }
    public static class RichTextBoxExtensions
    {
        public static void CheckAppendText(this RichTextBox richtextBox, Paragraph msg, bool waitUntilReturn = false)
        {
            //Action append = () =>
            Action append = () =>
            {
                richtextBox.Document.CheckAppendText(msg);
            };
            if (richtextBox.CheckAccess())
            {
                append();
            }
            else if (waitUntilReturn)
            {
                richtextBox.Dispatcher.Invoke(append);
            }
            else
            {
                richtextBox.Dispatcher.BeginInvoke(append);
            }
        }
    }
    public static class FlowDocumentExtensions
    {
        public static void CheckAppendText(this FlowDocument fDoc, Paragraph msg, bool waitUntilReturn = false)
        {
            //Action append = () =>
            Action append = () =>
            {
                //Paragraph msgx = msg;
                // msgx.Inlines.Add(Environment.NewLine);
                fDoc.Blocks.Add(msg);
            };
            if (fDoc.CheckAccess())
            {
                append();
            }
            else if (waitUntilReturn)
            {
                fDoc.Dispatcher.Invoke(append);
            }
            else
            {
                fDoc.Dispatcher.BeginInvoke(append);
            }
        }
    }
Which is how I add a Paragraph but no idea why its not working
Also this is the error I am getting
MS.Internal.PtsHost.UnsafeNativeMethods.PTS.SecondaryException
  HResult=0x80131500
  Message=The calling thread cannot access this object because a different thread owns it.
  Source=WindowsBase
  StackTrace:
   at System.Windows.Threading.Dispatcher.VerifyAccess()
   at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
   at System.Windows.Documents.Paragraph.get_KeepWithNext()
   at MS.Internal.Text.DynamicPropertyReader.GetKeepWithNext(DependencyObject element)
   at MS.Internal.PtsHost.BaseParagraph.GetParaProperties(FSPAP& fspap, Boolean ignoreElementProps)
   at MS.Internal.PtsHost.ContainerParagraph.GetParaProperties(FSPAP& fspap)
   at MS.Internal.PtsHost.PtsHost.GetParaProperties(IntPtr pfsclient, IntPtr nmp, FSPAP& fspap)
  This exception was originally thrown at this call stack:
    [External Code]
Inner Exception 1:
InvalidOperationException: The calling thread cannot access this object because a different thread owns it.
There isn't anything else really and I just use the Extentions like this
Paragraph p1 = new Paragraph();
p1.Append("Hello", Brushes.Transparent, Brushes.Green, true, false, false);
iSAPPRemoteUI.richtextBox_console.CheckAppendText(p1);
All this use to be fine when i just used plain text all problem started to happen when i tried to add the formatting
 
    