很奇怪当我把 treeList1.Invoke((MethodInvoker)delegate
放在循环外边时 UI被阻塞了 代码执行顺序
label1.Text = "111111111"--> GetTreeListBindings()--> MessageBox.Show("哇哈哈");
当按下面代码执行时,UI没有被阻塞
我想不阻塞UI。。还有什么办法吗?
private void simpleButton2_Click(object sender, EventArgs e)
{
treeList1.ClearNodes();
_thread = new Thread(new ThreadStart(delegate()
{
GetTreeListBindings();
}));
_thread.IsBackground = true;
_thread.Start();
label1.Text = "111111111";
MessageBox.Show("哇哈哈");
}
private void GetTreeListBindings()
{
DXTest01.BLL.Town_Village_Hos_Dictionary bll = new DXTest01.BLL.Town_Village_Hos_Dictionary();
DataTable dt = new DataTable();
DataTable dt_two = new DataTable();
//查出父节点
dt = bll.GetDataTable_sHosServerCode();
//循环添加数据
for (int i = 0; i < dt.Rows.Count; i++)
{
treeList1.Invoke((MethodInvoker)delegate
{
//绑定父节点
TreeListNode Node = treeList1.AppendNode(new object[]
{
dt.Rows[i]["sHosServerCode"],
dt.Rows[i]["sHosServerName"], null, null,
dt.Rows[i]["sMedComparison"]
}, null);
Node.SetValue(0, dt.Rows[i]["sHosServerCode"]);
//查询子节点
dt_two = bll.GetDataTable(dt.Rows[i]["sHosServerCode"].ToString());
//绑定子节点
for (int j = 0; j < dt_two.Rows.Count; j++)
{
this.treeList1.AppendNode
(new object[]
{
dt_two.Rows[j]["sHosServerCode"],
dt_two.Rows[j]["sHosServerName"],
dt_two.Rows[j]["sVillageHosCode"],
dt_two.Rows[j]["sVillageHosName"],
dt_two.Rows[j]["sMedComparison"]
}, Node);
}
});
}
}
- 2 回答
- 0 关注
- 412 浏览
添加回答
举报
0/150
提交
取消