PeerCastStation.GUI.MainForm.UpdateChannelList C# (CSharp) Метод

UpdateChannelList() приватный Метод

private UpdateChannelList ( ) : void
Результат void
    private void UpdateChannelList()
    {
      var new_list = peerCast.Channels;
      var old_list = channelList.Items.OfType<ChannelListItem>().Select(item => item.Channel);
      updating = true;
      foreach (var channel in old_list.Intersect(new_list).ToArray()) {
        for (var i=0; i<channelList.Items.Count; i++) {
          if ((channelList.Items[i] as ChannelListItem).Channel==channel) {
            channelList.Items[i] = new ChannelListItem(channel);
            if (channelList.SelectedIndex==i) {
              UpdateTree(channel);
              UpdateChannelInfo(channel);
              UpdateOutputList(channel);
            }
            break;
          }
        }
      }
      foreach (var channel in new_list.Except(old_list).ToArray()) {
        channelList.Items.Add(new ChannelListItem(channel));
      }
      foreach (var channel in old_list.Except(new_list).ToArray()) {
        for (var i=0; i<channelList.Items.Count; i++) {
          if ((channelList.Items[i] as ChannelListItem).Channel==channel) {
            channelList.Items.RemoveAt(i);
            break;
          }
        }
      }
      if (channelList.SelectedIndex<0) {
        ClearTree();
        ClearChannelInfo();
        ClearOutputList();
      }
      updating = false;
    }