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");
}
是'Node_Added'某種事件處理的? – Enigmativity
是的。加載另一個表單來創建節點。當節點被創建時,這被稱爲 – Muckeypuck
是否有可能'Nodes.Add(n);'最終調用'Node_Added'並且你有一個遞歸調用? – Enigmativity