PDA

View Full Version : سوال: مشکل در اینووک کردن یک event



elyass-pc
دوشنبه 10 تیر 1392, 15:59 عصر
سلام خدمت دوستان.
من در یک برنامه تمرینی کار با event ها به مشکل خوردم. از دوستان کسی هست که راهنماییم کنه؟
class Program
{
static void Main(string[] args)
{
var newMan = new worker();
newMan.myEvent += new myDelegateHandler(WorkerWorking);
newMan.EndOfEvent += new EventHandler(WorkerIsDone);
newMan.DoWork(8, "hamed");
}
static void WorkerWorking(object sender, workerEventArgs e)
{
Console.WriteLine(e.Id + ".." + e.Name);

}
static void WorkerIsDone(object sender, EventArgs e)
{
Console.WriteLine("THE WORK IS DONE!!!!");
}
}
--------------------------------------------------------------
public delegate int myDelegateHandler(object sender, workerEventArgs e);
public class worker
{
public event myDelegateHandler myEvent;
public event EventHandler EndOfEvent;
public void DoWork(int id, string name)
{
for (int i = 0; i < id; i++)
{
working(i + 1, name);
}
endWorking();
}
protected void working(int i, string name)
{
var del = myEvent as myDelegateHandler;
if (del != null)
del(this,new workerEventArgs(i,name));
}
protected void endWorking()
{
var del1 = EndOfEvent as EventHandler;
if (del1 != null)
del1(this, EventArgs.Empty);
}
}
--------------------------------------------------
public class workerEventArgs : EventArgs
{
public workerEventArgs(int id, string name)
{
Id = id;
Name = name;
}
public int Id { get; set; }
public string Name { get; set; }
}

ارور در این قسمت(main) هستش.
newMan.myEvent += new myDelegateHandler(WorkerWorking);

متن ارور
Error 1 'void event_delegate1.Program.WorkerWorking(object, event_delegate1.workerEventArgs)' has the wrong return type

Mahmoud.Afrad
دوشنبه 10 تیر 1392, 16:22 عصر
myDelegateHandler را void کنید و ببرید داخل کلاس worker.

public class worker
{
delegate void myDelegateHandler(object sender, workerEventArgs e);