void RaiseSpecificPacketEvents()
{
while (!abort)
{
while (SpecificPacketQueue.Count > 0)
{
PackageEventArgs pea = SpecificPacketQueue.Dequeue();
if (pea != null)
{
try
{
string methodName = pea.ReceivedPacket.PacketType.ToString() + "Received";
Type t = this.GetType();
FieldInfo f = t.GetField(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
if (f != null)
{
var eventDelegate = (MulticastDelegate)f.GetValue(this);
if (eventDelegate != null)
{
OnEvent(eventDelegate as EventHandler<PackageEventArgs>, pea);
}
else
{
}
}
else
{
}
//EventInfo ev = t.GetEvent(methodName);
//MethodInfo m = null;
//if (ev!= null)
//{
// m = ev.GetRaiseMethod();
// if (m != null)
// {
// object[] parms = new object[] { this, pea };
// m.Invoke(this, parms);
// }
//}
//else
//{
// OnEvent(UndefinedPacketReceived, pea);
//}
}
catch (Exception e)
{
if (CrashOnException)
{
throw new PacketProcessingException(e);
}
else
{
RaiseExceptionEncountered(e, pea.ID);
}
}
}
else
{
}
}
if (!abort)
{
mreSpecificPacketReceived.Reset();
mreSpecificPacketReceived.WaitOne();
}
}
}
//void ProcessSpecificPacket(object state)