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 { } }