好的,我不太清楚我的代码出了什么问题,也不知道发生了什么事情。
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
我想做的是有一个机器人可以执行任务,实际上是创建任务并等待它们完成工作。任务类在内部触发事件,让机器人类知道它完成了工作。机器人类会等待任务触发事件。希望这样清楚明了。很抱歉我的母语不是英语。
EventHandler<JobReport>
无法被推断为EventHandler<EventArgs>
,因此这样不起作用。 - James