public void EnqueueDataCall(OnDataProtoBufDelegate callback, byte[] data, int msgTypeLen) { Hashtable hashtable = new Hashtable(); hashtable["callback"] = callback; hashtable["data"] = data; hashtable["msgTypeLen"] = msgTypeLen; object obj = this.inQueueLocker; Monitor.Enter(obj); try { this.inThreadQueue.Enqueue(hashtable); this.inHasQueuedItems = true; } finally { Monitor.Exit(obj); } }
private void ProcessProtuBufItem(Hashtable item) { object obj = item["callback"]; OnDataProtoBufDelegate onProtoBufDataDelegate = obj as OnDataProtoBufDelegate; if (onProtoBufDataDelegate != null) { byte[] msg = (byte[])item["data"]; int msgTypeLen = (int)item["msgTypeLen"]; onProtoBufDataDelegate(msg, msgTypeLen); } else { ParameterizedThreadStart parameterizedThreadStart = obj as ParameterizedThreadStart; if (parameterizedThreadStart != null) { parameterizedThreadStart(item); } } }