public static void ReturnProtocolThreadSafe(Protocol protocol) { if (RegisterProtocolFactory != null && protocol != null) { lock (RegisterProtocolFactory) { ProtocolFactory factory = null; if (RegisterProtocolFactory.TryGetValue(protocol.GetMessageID(), out factory)) { factory.Return(protocol); } } } }