要实现的更能:例:我有一个树形结构:
01
 01001
   01001001
这么个结构;我想利用一个线程读取数据,一个线程以树形机构显示; 读取方法利用递归实现,问题就出在,我将读取方法新建线程 托管, 美读取一次 ,主线程显示一次; 
如果是两级 很好实现 方法如下:
        private void tlMedNameView()
        {
            List<String> mdType = SellFactory.GetSetupService().getAllMdType();
            for (int i = 0; i < mdType.Count; i++)
            {               
                int x = AddNode(mdType[i], -1);
                this.tlMedName.Nodes[i].ImageIndex = 0;
                List<String> medName = SellFactory.GetSetupService().getMedicineNameByType(mdType[i]);
                Thread.Sleep(20);
                for (int j = 0; j < medName.Count; j++)
                {
                    AddNode(medName[j], x);
                    this.tlMedName.Nodes[i].Nodes[j].ImageIndex = 1;
                    Thread.Sleep(10);
                }
            }                    
        }        private int AddNode(String text, int id)
        {
            if (this.tlMedName.InvokeRequired)
            {
                AddNoedCallBack d = new AddNoedCallBack(this.AddNode);
                return (int)this.Invoke(d, new object[] { text, id });
            }
            else
            {
                TreeListNode node = this.tlMedName.AppendNode(new object[] { text }, id);
                return node.Id;
            }         }
问题 是如果是多级 我该怎么处理!!!!! 请高手指点

解决方案 »

  1.   

    定义一个变量 intMark = 0; 一个树。
    读取线程每次在树中增加一个节点,就 intMark ++;
    显示线程放到一个Timer里,当发现 intMark 不为0,则读取树,显示。并将 intMark 设为0。
    这种方法没玩过,要当心脏读幻读什么的,自己去试吧。
      

  2.   

    LZ可以不可以考虑用事件来做,当有数据更新,就调用相应的Update方法,更新你在另一个地方的显示。没有必要一定要用2个线程的吧