
本文共 4795 字,大约阅读时间需要 15 分钟。
���������������������������������������������������������������WCF���WCF���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������.net������������������������������������������������������������EasyNetMessage������������������������������������������������������������������������string���byte���������������������������������������������M������������������������������������������������������������������������������������������������������������������������������������������������������������
������������
��������������������������������� internal int AddCall(int value1, int value2)���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������
a) ������������
���������������������������������������������������CallId������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������ManualResetEvent���������������CallId���ManualResetEvent������������������������������������������������������������ManualResetEvent���
//callid��������������� Dictionary_callEventGroup = new Dictionary (); //callId��������������������� Dictionary _callResultGroup = new Dictionary (); internal int AddCall(int value1, int value2) { //��������������� NetCallAdd add = new NetCallAdd(); add.Value1 = value1.ToString(); add.Value2 = value2.ToString(); MonitorClient client = GetCurAppClient(); if (client == null) throw new Exception("socket������������"); //���������������������������CallId������ ManualResetEvent callEvent = new ManualResetEvent(false); lock (_callEventGroup) { _callEventGroup.Add(add.CallId, callEvent); } //������������ EN_SendDataResult result = _netServer.SendData(client.ClientSocket, add.ToEasyMessage().ToNetPacket()); if (result != EN_SendDataResult.ok) { lock (_callEventGroup) { _callEventGroup.Remove(add.CallId); } throw new Exception("���������������������"); } //������������ callEvent.WaitOne(3000); _callEventGroup.Remove(add.CallId); //��������������� lock (_callResultGroup) { if (_callResultGroup.ContainsKey(add.CallId)) { NetCallAddAck ack = _callResultGroup[add.CallId]; return int.Parse(ack.Result); } } throw new Exception("���������������������"); }
b���������������
���������������������������������������������������������������������������CallId���������������ManualResetEvent������������������������������������������������������������������
���������������������������������������������key���CallId������������ManualResetEvent���Set������������������������������������������������������CallId������������������������������
internal void OnRcvAck(NetCallAddAck addAck) { //������callid������������ ManualResetEvent callEvent = null; lock (_callEventGroup) { if (!_callEventGroup.ContainsKey(addAck.CallId)) return; callEvent =_callEventGroup[addAck.CallId]; } //��������������������������� lock (_callResultGroup) { _callResultGroup.Remove(addAck.CallId); _callResultGroup.Add(addAck.CallId, addAck); } //������������������������,������������������������������������������ callEvent.Set(); }
���������������������������������������������������������������������������Redis������������������������������������������������������ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������
发表评论
最新留言
关于作者
