Displaying Parallel Execution Dialog in TestStand

Updated Dec 21, 2024

There may be instances where a user needs to display a dialog alongside their TestStand execution but in a manner that doesn't affect the order in which the test executes. In this document we will outline the steps necessary to enable users to create a dialog in a separate execution thread. 

 

  1. Create a new sequence file in TestStand, and create a subsequence in the sequences pane. 
  2. In the subsequence create an action step to call your dialog. In the screen shot below we are creating a dialog using LabWindows/CVI and call the code module through a CVI action step.
  3. In the MainSequence of your sequence file create a Sequence Call step that references your subsequence.
    • In the Step Settings >> Module tab you can use the option "Use Current File" to quickly reference the subsequence. 
    • In the Step Settings >> Module tab enable the "Execution Options: Use New Thread" option. This will allow the subsequence to be called in a separate execution thread.

In this example we execute the top level MainSequence and the Subsequence call will spawn the dialog in a new thread. The MainSequence will continue to execute its operations while the Subsequence is currently executing the dialog. 

When the MainSequence is finished, notice that the Dialog is still open and that the original SequenceFile still shows as [Executing] as it is indeed running in a separate thread from the MainSequence execution.  

 

Users can utilize built in functionality of TestStand steps to encapsulate a dialog in a subsequence that runs in a new parallel thread. 
As any multithreaded application, you can make use of TestStand synchronization tools to make sure that dialog is closed at the end of the test execution.
Examples of synchronization tools are TestStand synchronization step types such as Notifiers and Queues. 

The attached example is written in TestStand 2024 32-bit and LabWindows/CVI 2020 32-bit. 

Users can replace the CVI action step in the subsequence of the sequence file "TestFileCVIMultithreading.seq" to insert their own dialog as needed. The choice for using CVI was just to display that you can create the dialog in another code base.