DataSent PushData(int type, object data, int priority, MsgQueue.MessageProc proc) { List <OneQueue> qs = Receiver.Queues; if (priority < 0 || priority >= qs.Count) { priority = qs.Count - 1; } object o = data; OneQueue.Message msg = new OneQueue.Message(); msg.sender = this; msg.Data = o; msg.type = type; mutex.WaitOne(); qs[priority].PushData(msg); DataSent d = null; if (type == MsgQueue.msgtype_Request) { d = new DataSent(msg); sentMsgs.Add(d); } mutex.ReleaseMutex(); return(d); }
/// <summary> /// 发送消息并在本地处理 /// </summary> /// <param name="data">数据</param> /// <param name="priority">0:最高优先级,-1:最低优先级</param> /// <param name="proc">调用方法</param> /// <returns></returns> public object ProcessData(object data, int priority, MsgQueue.MessageProc proc) { State = SenderState.Busy; DataSent d = PushData(MsgQueue.msgtype_Request, data, priority, proc); requestThread = Thread.CurrentThread; d.evt.WaitOne(); requestThread = null; State = SenderState.Idle; return(d.retData); }