We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to cancel asynchronous document loading in WPF RichTextBox (SfRichTextBoxAdv) control?

Platform: WPF |
Control: SfRichTextBoxAdv |
Published Date: January 9, 2017 |
Last Revised Date: July 22, 2021

You can load the document asynchronously using LoadAsync() method in WPF RichTextBox (SfRichTextBoxAdv). If you are loading a document, while another document is already loading asynchronously, then the asynchronous load operation should be cancelled properly before new document is loaded.

The following code example demonstrates how to implement cancellation of loading the document in SfRichTextBoxAdv control.

C#

Global declaration of fields in page.

//Represents the document loading task.
Task<bool> loadAsync = null;
//Represents the cancellation token source.
CancellationTokenSource cancellationTokenSource = null;

Loading document in SfRichTextBoxAdv control asynchronously.

try
{
    //Instantiates new cancellation token source. 
    cancellationTokenSource = new CancellationTokenSource();
    //Invokes the asynchronous load method of SfRichTextBoxAdv
    loadAsync = richTextBoxAdv.LoadAsync("../../Data/Sample.docx", cancellationTokenSource.Token);
    await loadAsync;
    //Disposes the cancellation token source
    if (cancellationTokenSource != null)
        cancellationTokenSource.Dispose();
    cancellationTokenSource = null;
    loadAsync = null;
}
catch
{ } 

Cancelling the asynchronous load operation:

//Checks if the document load task is executing asynchronously. 
if (loadAsync != null && !loadAsync.IsCompleted && !loadAsync.IsFaulted && cancellationTokenSource != null)
{
    //Invokes the cancel method, to cancel the asynchronous load operation
    cancellationTokenSource.Cancel();
    try
    {
        if (!loadAsync.IsCanceled)
            //Holds the execution for cancel operation to be completed
            await loadAsync;
    }
    catch
    { }
} 

View sample in GitHub.

2X faster development

The ultimate WPF UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile