public void Unregister(TorrentManager manager)
{
CheckDisposed();
Check.Manager(manager);
MainLoop.QueueWait(() =>
{
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");
torrents.Remove(manager);
manager.PieceHashed -= PieceHashed;
manager.Engine = null;
manager.DownloadLimiter.Remove(downloadLimiter);
manager.UploadLimiter.Remove(uploadLimiter);
});
if (TorrentUnregistered != null)
TorrentUnregistered(this, new TorrentEventArgs(manager));
}