さて、コードの何が問題なのか、何が起こっているのか本当にわかりません
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 クラスが作業を完了したことを認識できるようにします。そしてボットクラスは、ジョブがイベントを発生させるまで待機します。だから私はそれが明確であることを願っています。そして、英語が私の母国語ではないことを申し訳ありません。