Hi Johan,
NCrunch will re-use test runner processes whenever they are available, but there are a number of configuration options that can affect the way that this happens.
Basically, NCrunch has a pool of processes that it retains between test runs. If a task in the processing queue (containing a batch of tests) needs a process, it first tries to retrieve one from the pool. If no suitable process exists, NCrunch will spawn a new one. If you turn on the 'Log to output window' setting and set your 'Log Verbosity' to 'Detailed', you'll see the engine logging activity in the NCrunch VS Output window around trying to retrieve these processes and creating them if they don't exist.
Try increasing the value of the
max test runners to pool setting. Also make sure you don't have a base class for your tests that makes use of NCrunch.Framework.IsolatedAttribute.
Check that the
test process memory limit setting is set to a sensible value. If your test process exceeds this limit at the end of a test batch, the engine will automatically recycle it.