<PackageReference Include="NUnit" Version="3.11.0" />

SimpleWorkItemDispatcher

SimpleWorkItemDispatcher handles execution of WorkItems by directly executing them. It is provided so that a dispatcher is always available in the context, thereby simplifying the code needed to run child tests.
using System.Threading; namespace NUnit.Framework.Internal.Execution { public class SimpleWorkItemDispatcher : IWorkItemDispatcher { private WorkItem _topLevelWorkItem; private Thread _runnerThread; private readonly object cancelLock = new object(); public int LevelOfParallelism => 0; public void Start(WorkItem topLevelWorkItem) { _topLevelWorkItem = topLevelWorkItem; _runnerThread = new Thread(RunnerThreadProc); _runnerThread.Start(); } public void Dispatch(WorkItem work) { work?.Execute(); } private void RunnerThreadProc() { _topLevelWorkItem.Execute(); } public void CancelRun(bool force) { lock (cancelLock) { if (_topLevelWorkItem != null) { _topLevelWorkItem.Cancel(force); if (force) _topLevelWorkItem = null; } } } } }