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 the LoadAsync() method in the WPF RichTextBox (SfRichTextBoxAdv). If you are loading a document while another document is already loading asynchronously, the asynchronous load operation should be properly canceled before the new document is loaded.

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

C#

Global declaration of fields in the page:

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

Loading a document in the SfRichTextBoxAdv control asynchronously:

try
{
    // Instantiates a 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 of the cancellation token source.
    if (cancellationTokenSource != null)
        cancellationTokenSource.Dispose();
    cancellationTokenSource = null;
    loadAsync = null;
}
catch
{
    // Handle exceptions if necessary.

Canceling 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 the cancel operation to be completed.
            await loadAsync;
    }
    catch
    {
        // Handle exceptions if necessary.
    } }

View the sample in GitHub.

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