一个涉及委托、事件的小问题。
- C# code
public class DbHelper{ //这个类里面有个InsertData—ataTable dt)方法,负责将DataTable中的数据一行一行的插入到数据库中 // Nested Types public delegate void tpiinfo(int value, int max); // Events public event tpiinfo Evtpiinfo; public void InsertData(DataTable dt) { int num = 0; int count = dt.Rows.Count; foreach (DataRow row in dt.Rows) { //插入代码 省略 num++; if (this.Evtpiinfo != null) { this.Evtpiinfo.BeginInvoke(num, count, null, null); } } }}
后台线程中调用InsertData执行数据插入。
这时候我想在UI的textbox1控件显示进度,比如"25/180"(当前插入了多少行/需要插入的总行数)。
DataTable dt; //
DbHelper这个类是我从一个Dll反编译来的,我知道把InsertData里面的代码拿出来可以很简单的实现上面的功能,但是,我就是想通过调用的方式来实现,怎么给Evtpiinfo事件注册方法。
[解决办法]
1.先修改事件,直接调用就行:
- C# code
if (this.Evtpiinfo != null){ this.Evtpiinfo(num, count);}
[解决办法]
if (this.Evtpiinfo != null)
{
this.Evtpiinfo(num, count);
}
[解决办法]
ohkuy 正解