public IAnnouncingChannel Announce(Channel channel) { AnnouncingChannel announcing = null; lock (announcingChannels) { announcing = announcingChannels.FirstOrDefault(a => a.Channel == channel); if (announcing != null) { return(announcing); } } Logger.Debug("Start announce channel {0} to {1}", channel.ChannelID.ToString("N"), Uri); channel.ChannelInfoChanged += OnChannelPropertyChanged; channel.ChannelTrackChanged += OnChannelPropertyChanged; channel.Closed += OnChannelClosed; announcing = new AnnouncingChannel { Channel = channel, Owner = this, IsStopped = false }; lock (announcingChannels) { announcingChannels.Add(announcing); } if (announceThread == null || !announceThread.IsAlive) { isStopped = false; restartEvent.Reset(); announceThread = new Thread(AnnounceThreadProc); announceThread.Name = String.Format("PCPYP {0} Announce", Uri); announceThread.Start(); } return(announcing); }
public IAnnouncingChannel Announce(Channel channel) { AnnouncingChannel announcing = null; lock (announcingChannels) { announcing = announcingChannels.FirstOrDefault(a => a.Channel==channel); if (announcing!=null) return announcing; } Logger.Debug("Start announce channel {0} to {1}", channel.ChannelID.ToString("N"), Uri); channel.ChannelInfoChanged += OnChannelPropertyChanged; channel.ChannelTrackChanged += OnChannelPropertyChanged; channel.Closed += OnChannelClosed; announcing = new AnnouncingChannel { Channel=channel, Owner=this, IsStopped=false }; lock (announcingChannels) { announcingChannels.Add(announcing); if (announceThread==null || !announceThread.IsAlive) { isStopped = false; restartEvent.Reset(); announceThread = new Thread(AnnounceThreadProc); announceThread.Name = String.Format("PCPYP {0} Announce", Uri); announceThread.Start(); } } return announcing; }