private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { Robots?.Dispose(); UpdateWaitHandle?.Dispose(); // we're disposing whilst people have this accessed. Do we lock here ? FetchWaitHandle?.Dispose(); // we're disposing whilst people have this accessed. Do we lock here ? UpdateWaitHandle = null; FetchWaitHandle = null; } Robots = null; disposedValue = true; } }