我正在尝试将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'
为什么会出现此错误?我对事件处理程序的理解是否存在缺陷?
答案 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
}