日期:2014-05-17  浏览次数:20832 次

一个涉及委托、事件的小问题。
C# code

public class DbHelper
{
    //这个类里面有个InsertData(DataTable 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 正解