Exemple #1
0
 public void copySerializableItems(RegionalFleg src)
 {
     this.isTrollFlag = src.isTrollFlag;
     this.imgurl      = src.imgurl;
     this.title       = src.title;
     this.thread      = src.thread;
     this.board       = src.board;
     this.pNo         = src.pNo;
     this.time        = src.time;
 }
        public FlagMergeManager(ConcurrentQueue <SerializableDictionary <string, RegionalFleg> > source, ref SerializableDictionary <string, RegionalFleg> dest, TreeListView myTreeView)
        {
            stack    = new BlockingCollection <SerializableDictionary <string, RegionalFleg> >(source);
            treeView = myTreeView;
            Form1 frm = (Form1)treeView.Parent.Parent.Parent;
            SerializableDictionary <string, RegionalFleg> dict = dest;

            consumer = Task.Run(() =>
            {
                foreach (SerializableDictionary <string, RegionalFleg> myObj in stack.GetConsumingEnumerable())
                {
                    foreach (RegionalFleg Fleg in myObj.Values)
                    {
                        SerializableDictionary <string, RegionalFleg> curDict = dict;
                        RegionalFleg curFleg  = Fleg;
                        RegionalFleg prevFleg = null;

                        if (!curDict.ContainsKey(curFleg.title))
                        {
                            curDict.Add(curFleg.title, curFleg);
                            // does it copy it all?  TODO CREATE DEEP COPY   48861
                        }
                        else
                        {
                            RegionalFleg presentFleg = curDict[curFleg.title];
                            if (presentFleg.time < curFleg.time)
                            {
                                presentFleg.time   = curFleg.time;
                                presentFleg.pNo    = curFleg.pNo;
                                presentFleg.thread = curFleg.thread;
                                presentFleg.board  = curFleg.board;
                            }
                            if (curFleg.children.Count > 0)
                            {
                                SerializableDictionary <string, RegionalFleg> curSrcDict  = curFleg.children;
                                SerializableDictionary <string, RegionalFleg> curDestDict = curDict[curFleg.title].children;
                                Form1.Merger(ref curSrcDict, ref curDestDict);
                            }
                        }
                    }

                    Thread.Sleep(200);
                    if (stack.Count == 0)
                    {
                        frm.UpdateRootsInvoker();
                        //frm.updateManager.AddToStack(Tuple.Create(Of String, Object)("ut", myTreeView))
                    }
                }
            });
        }