コード例 #1
0
        internal WaitHandle CloseFileStreams(TorrentManager manager)
        {
            ManualResetEvent handle = new ManualResetEvent(false);

            IOLoop.Queue(delegate {
                // Process all pending reads/writes then close any open streams
                try
                {
                    LoopTask();
                    writer.Close(manager.Torrent.Files);
                }
                catch (Exception ex)
                {
                    SetError(manager, Reason.WriteFailure, ex);
                }
                finally
                {
                    handle.Set();
                }
            });

            return(handle);
        }
コード例 #2
0
        void DhtEngineStateChanged(object o, EventArgs e)
        {
            if (dhtEngine.State != DhtState.Ready)
            {
                return;
            }

            MainLoop.Queue(delegate {
                foreach (TorrentManager manager in torrents)
                {
                    if (!manager.CanUseDht)
                    {
                        continue;
                    }

                    dhtEngine.Announce(manager.InfoHash, Listener.Endpoint.Port);
                    dhtEngine.GetPeers(manager.InfoHash);
                }
            });
        }