public void Unregister(TorrentManager manager)
{
CheckDisposed();
Check.Manager(manager);
MainLoop.QueueWait(delegate
{
if (manager.Engine != this)
throw new TorrentException("The manager has not been registered with this engine");
if (manager.State != TorrentState.Stopped)
throw new TorrentException("The manager must be stopped before it can be unregistered");
this._torrents.Remove(manager);
manager.PieceHashed -= PieceHashed;
manager.Engine = null;
manager.DownloadLimiter.Remove(_downloadLimiter);
manager.UploadLimiter.Remove(_uploadLimiter);
});
TorrentUnregistered?.Invoke(this, new TorrentEventArgs(manager));
}