Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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);
        }