好吧,我真的不知道我的代码出了什么问题,怎么回事
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);
给
错误 30 Project.Activity.WaitEventRaise(ref System.EventHandler)' 的最佳重载方法匹配有一些无效参数
currentJob 是一个Job : Activity
有事件的类
public event EventHandler<JobReport> JobReported;
和
class JobReport : EventArgs
我想要做的是有一个机器人来完成工作,实际上它会创建工作并等待他们完成工作。Job 类在内部引发事件以使 bot 类注意到它完成了工作。机器人类一直等到工作引发事件。所以我希望它清楚。我很抱歉英语不是我的母语。