public void DisconnectCpu(string name)
        {
            if (_service.Cpus.ContainsKey(name))
            {
                _logger.Log(new LogEntry(LoggingEventType.Information, $"CpuManager.DisconnectCpu Name={name}"));

                Cpu cpu = _service.Cpus[name];

                if (cpu.IsConnected)
                {
                    _disconnectWaitHandle = new AutoResetEvent(false);

                    cpu.Disconnect();

                    _disconnectWaitHandle.WaitOne(1000);
                    _disconnectWaitHandle.Dispose();
                    _disconnectWaitHandle = null;
                }

                _service.Cpus.Remove(cpu.Name);
            }
            else
            {
                _logger.Log(new LogEntry(LoggingEventType.Information, $"CpuManager.DisconnectCpu Name={name} Not found"));
            }
        }
        public void DisconnectCpu(CpuInfo info)
        {
            if (_service.Cpus.ContainsKey(info.Name))
            {
                Cpu cpu = _service.Cpus[info.Name];

                if (cpu.IsConnected)
                {
                    using (_disconnectWaitHandle = new AutoResetEvent(false))
                    {
                        cpu.Disconnect();
                        _disconnectWaitHandle.WaitOne(1000);
                    }
                }
                cpu.Removed += Cpu_Removed;
                cpu.Remove();
            }
        }
        public void DisconnectCpu(string name)
        {
            if (_service.Cpus.ContainsKey(name))
            {
                _log.Info($"CpuManager.DisconnectCpu Name={name}");

                Cpu cpu = _service.Cpus[name];

                if (cpu.IsConnected)
                {
                    cpu.Disconnect();

                    _service.Cpus.Remove(cpu.Name);
                }
                else
                {
                    _log.Info($"CpuManager.DisconnectCpu Name={name} Not found");
                }
            }
        }