2016-08-28 44 views
0

我正在創建一個新的節點對象,然後將其添加到集合中。將對象添加到收藏需要很長時間

的問題是,當它擊中的代碼行:

Nodes.Add(n); 

調試器只是坐在那裏像添加需要永遠。如果我走開並在30分鐘內回來,並打破所有它將仍然是添加節點。

任何想法,爲什麼會是這樣嗎?

public BindingList<vmNode> Nodes; 


     private void Node_Added(BindingList<vmNode> nodes) 
    { 

     tvwNodes.SelectedNode.Expand(); 

     using (ENIEntities context = ENIEntities.ConnectToSqlServer(ENI.Data.Configuration.ConnectionString)) 
     { 
      foreach (vmNode n in nodes) 
      { 
       //Do Prefix and Suffix 
       //ENI.Node Node = new ENI.Node(Convert.ToInt32(tvwNodes.SelectedNode.Value)); 
       NodeType nt = null; 

       nt = context.NodeTypes.SingleOrDefault(no => no.NodeTypeID == n.NodeTypeID); 


       n.Name = (nt.Prefix ?? "") + " " + n.Name + " " + (nt.Suffix ?? ""); 
       Nodes.Add(n); 
       //StyleNode 
       StyleNode(GetAddedNode(tvwNodes.SelectedNode.Nodes, n.NodeID)); 
      } 

     } 

    } 

長途區號

 private void showAddNodeDialog(string strNodeType) 
    { 
     if (tvwNodes.SelectedNode != null) 
     { 

      Node Node = null; 

      using (ENIEntities context = ENIEntities.ConnectToSqlServer(ENI.Data.Configuration.ConnectionString)) 
      { 
       Node = context.Nodes.Find((Int32)tvwNodes.SelectedNode.Value); 
      } 

      frmNewNode frm = new frmNewNode(Node.NodeID, strNodeType); 
      frm.NodeAdded += Node_Added; 
      frm.ShowDialog(); 

      if (frm.copiedChildren) 
      { 
       LoadTree(); 
      } 

      loadControls(); 

      tvwNodes.SelectedNode = GetAddedNode(tvwNodes.Nodes, Node.NodeID); 
      tvwNodes.SelectedNode.Expand(); 
      tvwNodes.SelectedNode.EnsureVisible(); 

      frm.NodeAdded -= Node_Added; 
      frm.Dispose(); 

      //frmNewDocument frm = new frmNewDocument(Convert.ToInt32(tvwNodes.SelectedNode.Value), strDocumentType); 
      //frm.ShowDialog(); 
      //loadControls(); 
     } 
     else 
      MessageBox.Show("You Must Select a Node to Add to"); 
    } 
+0

是'Node_Added'某種事件處理的? – Enigmativity

+0

是的。加載另一個表單來創建節點。當節點被創建時,這被稱爲 – Muckeypuck

+1

是否有可能'Nodes.Add(n);'最終調用'Node_Added'並且你有一個遞歸調用? – Enigmativity

回答

1

我懷疑Nodes.Add(n);結束調用Node_Added和你有一個遞歸調用。

基於這些評論,你質疑這確實是似乎已經發生了。