好吧,我真的不知道有什么错我的代码,并发生了什么事这么通过事件处理程序参数
class Activity
有以下几种方法
protected struct EventParams
{
public object sender;
public EventArgs e;
}
private EventParams WaitEventRaise_Body(ref EventHandler<EventArgs> handler, int timeout)
{
AutoResetEvent receiver = new AutoResetEvent(false);
EventParams result = new EventParams();
EventHandler<EventArgs> handle = new EventHandler<EventArgs>((sender, e) =>
{
result.e = e;
result.sender = sender;
receiver.Set();
});
handler += handle;
if (timeout > 0)
{
receiver.WaitOne(timeout);
}
else
{
receiver.WaitOne();
}
return result;
}
protected EventParams WaitEventRaise(ref EventHandler<EventArgs> handler)
{
return WaitEventRaise_Body(ref handler, -1);
}
protected EventParams WaitEventRaise(ref EventHandler<EventArgs> handler, int timeout)
{
return WaitEventRaise_Body(ref handler, timeout);
}
好了,所以我发现自己写了个遍再次AutoResetEvent的事情,所以我决定创建一个方法。但是,当我尝试从派生类中调用这个方法Bot : Activity
EventParams eventResult = WaitEventRaise(ref currentJob.JobReported);
给
Error 30 The best overloaded method match for Project.Activity.WaitEventRaise(ref System.EventHandler)' has some invalid arguments
currentJob是一个Job : Activity
类具有事件
public event EventHandler<JobReport> JobReported;
和
class JobReport : EventArgs
我想要做的是有一个机器人做的工作,实际上它创造了工作,并等待他们完成工作。工作班级在内部引发事件,使机器人班级注意到它完成了工作。和bot类等待,直到工作提出事件。所以我希望它清楚。对不起,英语不是我的母语。
'事件处理'不能被推断为'事件处理'所以这是行不通的。 –
James
不适合JobReport的这项工作吗? 类JobReport:EventArgs的 – user1046403
行我试图 EventParams eventResult = WaitEventRaise(参考文献currentJob.test); 其中 公共事件的EventHandler测试; ,它给我的错误:事件测试只能出现在的+ =等等等等 –
user1046403