Interface IDocumentLoadingCallback

Interface IDocumentLoadingCallback

Namespace: Aspose.Words.Loading
Assembly: Aspose.Words.dll (25.12.0)

Implement this interface if you want to have your own custom method called during loading a document.

public interface IDocumentLoadingCallback

Examples

Shows how to notify the user if document loading exceeded expected loading time.

public void ProgressCallback()
                                                                                           {
                                                                                               LoadingProgressCallback progressCallback = new LoadingProgressCallback();

                                                                                               LoadOptions loadOptions = new LoadOptions { ProgressCallback = progressCallback };

                                                                                               try
                                                                                               {
                                                                                                   Document doc = new Document(MyDir + "Big document.docx", loadOptions);
                                                                                               }
                                                                                               catch (OperationCanceledException exception)
                                                                                               {
                                                                                                   Console.WriteLine(exception.Message);

                                                                                                   // Handle loading duration issue.
                                                                                               }
                                                                                           }

                                                                                           /// <summary>
                                                                                           /// Cancel a document loading after the "MaxDuration" seconds.
                                                                                           /// </summary>
                                                                                           public class LoadingProgressCallback : IDocumentLoadingCallback
                                                                                           {
                                                                                               /// <summary>
                                                                                               /// Ctr.
                                                                                               /// </summary>
                                                                                               public LoadingProgressCallback()
                                                                                               {
                                                                                                   mLoadingStartedAt = DateTime.Now;
                                                                                               }

                                                                                               /// <summary>
                                                                                               /// Callback method which called during document loading.
                                                                                               /// </summary>
                                                                                               /// <param name="args">Loading arguments.</param>
                                                                                               public void Notify(DocumentLoadingArgs args)
                                                                                               {
                                                                                                   DateTime canceledAt = DateTime.Now;
                                                                                                   double ellapsedSeconds = (canceledAt - mLoadingStartedAt).TotalSeconds;

                                                                                                   if (ellapsedSeconds > MaxDuration)
                                                                                                       throw new OperationCanceledException($"EstimatedProgress = {args.EstimatedProgress}; CanceledAt = {canceledAt}");
                                                                                               }

                                                                                               /// <summary>
                                                                                               /// Date and time when document loading is started.
                                                                                               /// </summary>
                                                                                               private readonly DateTime mLoadingStartedAt;

                                                                                               /// <summary>
                                                                                               /// Maximum allowed duration in sec.
                                                                                               /// </summary>
                                                                                               private const double MaxDuration = 0.5;
                                                                                           }

Methods

Notify(DocumentLoadingArgs)

This is called to notify of document loading progress.

void Notify(DocumentLoadingArgs args)

Parameters

args DocumentLoadingArgs

An argument of the event.

Examples

Shows how to notify the user if document loading exceeded expected loading time.

public void ProgressCallback()
                                                                                           {
                                                                                               LoadingProgressCallback progressCallback = new LoadingProgressCallback();

                                                                                               LoadOptions loadOptions = new LoadOptions { ProgressCallback = progressCallback };

                                                                                               try
                                                                                               {
                                                                                                   Document doc = new Document(MyDir + "Big document.docx", loadOptions);
                                                                                               }
                                                                                               catch (OperationCanceledException exception)
                                                                                               {
                                                                                                   Console.WriteLine(exception.Message);

                                                                                                   // Handle loading duration issue.
                                                                                               }
                                                                                           }

                                                                                           /// <summary>
                                                                                           /// Cancel a document loading after the "MaxDuration" seconds.
                                                                                           /// </summary>
                                                                                           public class LoadingProgressCallback : IDocumentLoadingCallback
                                                                                           {
                                                                                               /// <summary>
                                                                                               /// Ctr.
                                                                                               /// </summary>
                                                                                               public LoadingProgressCallback()
                                                                                               {
                                                                                                   mLoadingStartedAt = DateTime.Now;
                                                                                               }

                                                                                               /// <summary>
                                                                                               /// Callback method which called during document loading.
                                                                                               /// </summary>
                                                                                               /// <param name="args">Loading arguments.</param>
                                                                                               public void Notify(DocumentLoadingArgs args)
                                                                                               {
                                                                                                   DateTime canceledAt = DateTime.Now;
                                                                                                   double ellapsedSeconds = (canceledAt - mLoadingStartedAt).TotalSeconds;

                                                                                                   if (ellapsedSeconds > MaxDuration)
                                                                                                       throw new OperationCanceledException($"EstimatedProgress = {args.EstimatedProgress}; CanceledAt = {canceledAt}");
                                                                                               }

                                                                                               /// <summary>
                                                                                               /// Date and time when document loading is started.
                                                                                               /// </summary>
                                                                                               private readonly DateTime mLoadingStartedAt;

                                                                                               /// <summary>
                                                                                               /// Maximum allowed duration in sec.
                                                                                               /// </summary>
                                                                                               private const double MaxDuration = 0.5;
                                                                                           }

Remarks

The primary uses for this interface is to allow application code to obtain progress status and abort loading process.

An exception should be threw from the progress callback for abortion and it should be caught in the consumer code.

See Also

LoadOptions . ProgressCallback

 English