public void AddColumn(PanelColumnHeader header) { var column = LV.Columns.Add(header.Text, header.Width); column.TextAlign = (System.Windows.Forms.HorizontalAlignment)header.TextAlign; column.Tag = header; }
public void RegisterColumn <TPanelItem>(PanelColumnHeader header) where TPanelItem : PanelItemBase { IList <PanelColumnHeader> found; var typeName = typeof(TPanelItem).Name; if (!m_Types.TryGetValue(typeName, out found)) { found = new List <PanelColumnHeader>(); m_Types.Add(typeName, found); } header.Index = found.Count; found.Add(header); if (found.Count > m_MaxColumns) { m_MaxColumns = found.Count; } }
public IComparable AsyncGetData(PanelColumnHeader column, PanelItemBase panelItem) { IComparable result; bool found; lock (column) { found = column.LazyDict.TryGetValue(panelItem, out result); } if (found) { return(result); } lock (m_AsyncQueue) { if (m_AsyncQueue.Contains(panelItem)) { m_AsyncQueue.Remove(panelItem); } m_AsyncQueue.AddFirst(panelItem); } UpdateThreads(column); return(null); }
private void UpdateThreads(PanelColumnHeader column) { if (NumThreads * NUM_CYCLES_IN_THREAD < m_AsyncQueue.Count) { lock (m_Threads) { // remove stopped threads for (int i = m_Threads.Count - 1; i >= 0; i--) { if (m_Threads[i].ThreadState == ThreadState.Stopped) { m_Threads.RemoveAt(i); } } // start new threads while (NumThreads * NUM_CYCLES_IN_THREAD < m_AsyncQueue.Count) { var thread = new Thread(AsyncEnum); m_Threads.Add(thread); thread.Start(column); } } } }