示例#1
0
        /// <summary>
        /// 发送请求无返回
        /// </summary>
        /// <param name="transfer"></param>
        public void Send(DBTransfer transfer)
        {
            byte[] buf = SerializerFactory <CommonSerializer> .Serializer(transfer);

            RequestServer request = new RequestServer();

            request.Address = SrvControl.Instance.GetCureent();
            byte[]        rec    = request.Request(buf);
            RequestResult result = SerializerFactory <CommonSerializer> .Deserialize <RequestResult>(rec);

            if (result.Error == ErrorCode.Exception)
            {
                throw new ServerException(result.ReslutMsg);
            }
        }
示例#2
0
        /// <summary>
        /// 发送请求带返回
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="transfer"></param>
        /// <returns></returns>
        public T  Send <T>(DBTransfer transfer)
        {
            byte[] buf = SerializerFactory <CommonSerializer> .Serializer(transfer);

            RequestServer request = new RequestServer();

            request.Address = SrvControl.Instance.GetCureent();
            byte[]        rec    = request.Request(buf);
            RequestResult result = SerializerFactory <CommonSerializer> .Deserialize <RequestResult>(rec);

            if (result.Error != ErrorCode.Exception)
            {
                if (typeof(T) == typeof(DataTable) || typeof(T) == typeof(DataSet))
                {
                    //当前序列化不能对DataTable
                    //服务端转换为XML
                    if (result.Result != null)
                    {
                        if (typeof(string) == result.Result.GetType())
                        {
                            DataSet ds     = new DataSet();
                            var     stream = new StringReader(result.Result.ToString());
                            //从stream装载到XmlTextReader
                            var reader = new XmlTextReader(stream);
                            ds.ReadXml(reader);
                            if (typeof(T) == typeof(DataSet))
                            {
                                result.Result = ds;
                            }
                            else
                            {
                                result.Result = ds.Tables[0];
                            }
                        }
                    }
                }
                return((T)result.Result);
            }
            else
            {
                throw new ServerException(result.ReslutMsg);
            }
        }
示例#3
0
 private void Send()
 {
     Task.Factory.StartNew(() =>
     {
         DBTransfer transfer = null;
         int num             = 0;
         int waitTime        = 300;//5分钟
         while (true)
         {
             if (queue.IsEmpty)
             {
                 Thread.Sleep(1000);
                 num++;
                 if (num > waitTime)
                 {
                     break;
                 }
                 continue;
             }
             num = 0;
             if (queue.TryDequeue(out transfer))
             {
                 semaphore.Wait();
                 Task.Factory.StartNew(() =>
                 {
                     byte[] buf            = SerializerFactory <CommonSerializer> .Serializer(transfer);
                     RequestServer request = new RequestServer();
                     request.Address       = SrvControl.Instance.GetCureent();
                     byte[] rec            = request.Request(buf);
                     RequestResult result  = SerializerFactory <CommonSerializer> .Deserialize <RequestResult>(rec);
                     if (SrvExecuteResult != null)
                     {
                         SrvExecuteResult(result.RequestID, result.Error == ErrorCode.Sucess, result.ReslutMsg);
                     }
                     semaphore.Release();
                 });
             }
         }
         Send();//递归更新线程
     });
 }