为什么我在新课程中创建活动时出错?

Hai*_*shi 2 c# generics events

我不理解erorr消息以及如何解决它以及它为什么会发生.这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Threading;

namespace GatherLinks
{
    class BackgroundWebCrawling
    {
        public string f;
        int counter = 0;
        List<string> WebSitesToCrawl;
        int MaxSimultaneousThreads;
        BackgroundWorker mainBackGroundWorker;
        BackgroundWorker secondryBackGroundWorker;
        WebcrawlerConfiguration webcrawlerCFG;
        List<WebCrawler> webcrawlers;
        int maxlevels;
        public event EventHandler<BackgroundWebCrawling> ProgressEvent;
Run Code Online (Sandbox Code Playgroud)

错误发生在ProgressEvent上

错误1类型'GatherLinks.BackgroundWebCrawling'不能用作泛型类型或方法'System.EventHandler'中的类型参数'TEventArgs'.没有从'GatherLinks.BackgroundWebCrawling'到'System.EventArgs'的隐式引用转换.

Mar*_*ell 10

EventHandler<T>签名是(至少最初)用于方案,其中args(在公共sender/ args图案)是一些子类EventArgs.因此,存在where T : EventArgs约束(编辑 - 如ByteBlast注释:直到.NET 4.5,其中约束被删除)

BackgroundWebCrawling不是一个EventArgs.除此之外,没有必要发送它作为args,因为你可能已经发送它(this)作为sender.

如果你没有有趣的args要发送,只需使用非泛型EventHandler,然后发送EventArgs.Empty.