Исходя из приведенного вами ограниченного описания, я бы выбрал Singleton, поскольку тогда он не зависит от HttpContext.Current и может использоваться вне конвейера ASP.Net (например, когда вы хочу написать модульные тесты.)
(Кроме того, когда вы устанавливаете что-то в ApplicationState, вам также необходимо сначала вызвать Lock () для него, а затем разблокировать () после завершения записи в него, чтобы сделать уверен, что это потокобезопасный.)
Альтернативно, разрешите внедрение HttpContext при создании ProcessManager, чтобы вы могли использовать его с имитированным HttpContext.