我有一个Sender
类,它在IChannel
上发送一条Message
:
public class MessageEventArgs : EventArgs {
public Message Message { get; private set; }
public MessageEventArgs(Message m) { Message = m; }
}
public interface IChannel {
public event EventHandler<MessageEventArgs> MessageReceived;
void Send(Message m);
}
public class Sender {
public const int MaxWaitInMs = 5000;
private IChannel _c = ...;
public Message Send(Message m) {
_c.Send(m);
// wait for MaxWaitInMs to get an event from _c.MessageReceived
// return the message or null if no message was received in response
}
}
当我们发送消息时,根据所发送的消息类型,IChannel
有时会通过触发 MessageReceived
事件来给予回应。事件参数中包含所需的消息。
我想让 Sender.Send()
方法等待一段时间,以查看是否触发了这个事件。如果是这样,我将返回其 MessageEventArgs.Message
属性。如果没有,我将返回空的 Message
。
如何以这种方式等待?我希望不必使用 ManualResetEvents
等线程管理工具,因此仅使用常规的 event
对象对我来说最理想。
System.Threading
。 - Evan BarkleyManualResetEvent
? - Evan Barkley