public void Dispose() {
if (!_disposeToken.TryMarkDisposed()) {
return;
}
var sessions = GetSessions().ToList();
var stopHostTasks = sessions.Select(session => session.StopHostAsync());
try {
_services.Tasks.Wait(Task.WhenAll(stopHostTasks));
} catch (Exception ex) when (!ex.IsCriticalException()) { }
foreach (var session in sessions) {
session.Dispose();
}
Broker.Dispose();
}
public void Lifecycle() { var sessionProvider = new RSessionProvider(TestCoreServices.CreateReal()); // ReSharper disable once AccessToDisposedClosure Action a = () => sessionProvider.GetOrCreate(new Guid()); a.ShouldNotThrow(); sessionProvider.Dispose(); a.ShouldThrow<InvalidOperationException>(); }