很奇怪当我把 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); } }); } }
MMMHUHU
神不在的星期二