使用事件处理程序的异步进度问题

时间:2013-08-01 12:30:30

标签: c# events asynchronous progress

我正在尝试将Async Progress Pattern实现到我的程序中。但是我陷入了一个相当令人尴尬的境界:我无法分配事件处理程序。

我的代码如下所示: 这个事件是在一个额外的窗口中handeld:

public ProgressReportViewModel(IWindowManager windManager, Progress<ProgressReport> progressReport)
{
    this.ProgressReport = progressReport;
    this.ProgressReport.ProgressChanged += HandleProgressChanged;
}

    public void HandleProgressChanged(ProgressReport report)
    {

//做的事。         }

如果我正在尝试编译,则会收到以下错误: 'HandleProgressChanged'没有重载匹配委托'System.EventHandler'

为什么会出现此错误?我对事件处理程序的理解是否存在缺陷?

1 个答案:

答案 0 :(得分:2)

Progress<T>.ProgressChanged事件的代理类型为EventHandler<T>,具有此签名:

public delegate void EventHandler<TEventArgs>(
    Object sender,
    TEventArgs e
)

将您的代码更改为:

public void HandleProgressChanged(Object sender, ProgressReport report)
{
    // do stuff
}