这段代码如何通过处理时间来表现? (即它是如何同步的?)
public delegate void FooDelegate(bytes[] data);
public event FooDelegate FooEvent;
FooEvent += new FooDelegate(Process_X);
FooEvent += new FooDelegate(Process_Y);
FooEvent += new FooDelegate(Process_Z);
while (receiving)
{
byte[] data = getRealTimeData();
StopWatch.Start();
FooEvent(data);
StopWatch.Stop();
Console.Write(StopWatch.Elapsed.Millisec));
StopWatch.Reset();
}
我有几个问题:
一些确认:
答案 0 :(得分:1)
1:是的 2:是的 事件可能会返回结果。
但是:你应该以某种方式实现你的事件处理程序,这样它们就不会花费很长时间来运行! 如果他们必须进行繁重的工作,请考虑在您的事件处理器中启动的任务中运行计算。
答案 1 :(得分:1)
看起来您会受益于事件处理程序的并行化,因为它们确实会按顺序和同步执行。
要创建自定义事件处理程序,您可以编写:
public event FooDelegate FooEvent
{
add
{
// code to add an event handler
}
remove
{
// code to remove an event handler
}
}
有关如何处理自定义事件处理程序的详细信息,请参阅以下问题:
和Jon Skeet关于delegates and events的页面。