Articles in this section
Category / Section

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

1 min read

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.

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied