最近几天在写c#生成xml和txt文件的部分, 但新建的线程无法访问主线程的UI, 这个问题可是让我好顿头疼.
后来想了不用线程了, 全放在主线程里进行, 可是在批量生成几个文件的时候,界面就卡的不行, 所以放弃.
于是还得研究如何在新线程中能访问并调用主线程的UI,并控制进度条.
在网上搜索了半天, 找到一个叫委托的东东, 这个东西对于做PHP的我确实是个新玩意
不过确实是挺好用的, 呵呵真香
private delegate void SetPos(int ipos); // 代理
// 使用代理控制进度条
private void SetTextMesssage(int ipos) {
if(this.InvokeRequired) {
SetPos setpos = new SetPos(SetTextMesssage);
this.Invoke(setpos, new object[] { ipos });
} else {
this.progressBar1.Value = Convert.ToInt32(ipos);
}
}
// 在方法中调用代理控制进度条
SetTextMesssage(i/dtCount * 100);
说明1:progressBar1是进度条控件.
说明2: 这段代码是我在网上所搜的时候找到的, 忘记留网址了, 所以没办法标明出处, 在此表示抱歉.