Loading ...

Handling Interruption Issues in Acumatica Processing Screens

Interrupting a long-running process in Acumatica is critical for user experience, particularly on processing screens where batch operations are common. However, developers sometimes encounter issues where the process cannot be interrupted as expected. This challenge often stems from improper handling of cancellation tokens within the process logic.

The Role of Cancellation Tokens

A cancellation token provides a mechanism to signal when a process should terminate early. In Acumatica, when defining a process delegate, passing and checking the cancellation token is necessary to allow for proper interruption. Failing to do so can lead to unresponsive processes, even if the user clicks the cancel button on the processing screen.

The Common Mistake

A common mistake involves defining the process delegate without passing the cancellation token. For example:

ProcessingHandler.SetProcessDelegate((records) => 

ProcessRecords(records));

Here, the ProcessRecords method cannot detect cancellation requests, meaning the process runs to completion regardless of user input.

The Correct Approach

To enable interruption, you must include and pass the cancellation token when setting the process delegate:

This pattern ensures that the process respects user cancellation requests and terminates gracefully.

Key Takeaways

  1. Always Pass the Cancellation Token: When defining a process delegate, include the cancellation token to enable proper interruption.
  2. Check Periodically: In long-running loops or iterative processing, check cancellationToken.IsCancellationRequested regularly.
  3. User Experience Matters: Respecting cancellation requests improves the usability and reliability of your application.

Implementing these practices ensures that your Acumatica customization provides a responsive and user-friendly experience, even when handling complex processing tasks.