2016-08-28 13 views
0

新しいNodeオブジェクトを作成してコレクションに追加しています。コレクションにオブジェクトを追加するのに時間がかかります

Nodes.Add(n); 

アドオンは永遠に取るようにデバッガがちょうどそこに座っ:

問題は、それがコードの行に当たったときにということです。私が歩いて30分後に戻ってBreak Allを押すと、まだノードが追加されます。

これはどうして起こるのでしょうか?コード

 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

を呼び出す

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)); 
      } 

     } 

    } 

私はNodes.Add(n);Node_Addedを呼び出して終了と思われる、あなたは再帰呼び出しを持っています。

あなたのコメントに基づいて、これは実際に起こったようです。

関連する問題