public void UpdateIcons(IconDescriptor[] iconDescArray) { lock (SyncRoot) { foreach (var id in iconDescArray) { if (!m_iconWrapperDict.ContainsKey(id)) { m_iconWrapperDict.Add(id, new IconTextureWrapper(id)); } var itw = m_iconWrapperDict[id]; itw.Visible = id.Visible; if (itw.Texture == null && D3D != null) { itw.Load(D3D); } } var iconDescList = new List<IconDescriptor>(iconDescArray); var deleteList = new List<IconDescriptor>(); foreach (var id in m_iconWrapperDict.Keys) { if (!iconDescList.Contains(id)) { deleteList.Add(id); } } foreach (var id in deleteList) { m_iconWrapperDict[id].Dispose(); m_iconWrapperDict.Remove(id); } } }
public IconTextureWrapper(IconDescriptor iconDesc) { m_iconDesc = iconDesc; Visible = iconDesc.Visible; }