2013-07-01 2 views
2

나는 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; 

오류는 제네릭 형식 또는 메서드에 형식 매개 변수 'TEventArgs'로 사용할 수 없습니다 의해 ProgressEvent

오류 1 유형 'GatherLinks.BackgroundWebCrawling'에 : 이 코드입니다 'System.EventHandler'. 암시적인 참조 은 'GatherLinks.BackgroundWebCrawling'에서 'System.EventArgs'로 변환됩니다.

답변

10

EventHandler<T> 서명 (공통 sender/args 패턴)을 argsEventArgs는 어떤 서브 클래스이다 (적어도 처음에) 시나리오를위한 것이다. 예로서, where T : EventArgs 제약 (편집 - ByteBlast 노트로 다음 constraint is removed 경우 .NET 4.5까지)가

BackgroundWebCrawling하지EventArgs입니다. 그 외에도 args으로 보내면 아무런 의미가 없으므로 이미 sender으로 보내고 있습니다 (this).

흥미로운 arg를 보내지 않으려면 EventHandler이 아닌 일반 문자를 사용하고 EventArgs.Empty을 보내면됩니다.

관련 문제