Why?
The simpler solution would be to put each "instance of the application" into a separate thread within the actual app, with it reporting results back to the main thread. That way, resources are minimized (because all the threads will share the same process space instead of requiring independent heaps) and passing parameters to them can be as simple or complex as you need.
Start by looking at this:
BackgroundWorker Class (System.ComponentModel) | Microsoft Docs[
^] - it's simple to set up and simple to pass progress or other data back as necessary to the main thread for collation / display.