Queue() 개인적인 메소드

private Queue ( DelegateTask task ) : void
task DelegateTask
리턴 void
예제 #1
0
        internal WaitHandle CloseFileStreams(TorrentManager manager)
        {
            var 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
        private void DhtEngineStateChanged(object o, EventArgs e)
        {
            if (DhtEngine.State != DhtState.Ready)
            {
                return;
            }

            MainLoop.Queue(delegate
            {
                foreach (var manager in _torrents.Where(manager => manager.CanUseDht))
                {
                    DhtEngine.Announce(manager.InfoHash, Listener.Endpoint.Port);
                    DhtEngine.GetPeers(manager.InfoHash);
                }
            });
        }