//public bool Send(SockTcp tcpObj,bool encode,ref bool life){ public bool Send(SockTcp tcpObj,bool encode,ILife iLife) { if(_kindBuf == KindBuf.Memory) { if(encode) { if(-1 == tcpObj.SendUseEncode(_doc)) return false; } else { if(-1 == tcpObj.SendNoEncode(_doc)) return false; } } else { using(var fs = new FileStream(_fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)) { using(var br = new BinaryReader(fs)) { fs.Seek(_rangeFrom,SeekOrigin.Begin); var start = _rangeFrom; while(iLife.IsLife()) { long size = _rangeTo - start + 1; if(size > 1048560) size = 1048560; if(size <= 0) break; _doc = new byte[size]; int len = br.Read(_doc,0,(int)size); if(len <= 0) break; if(len != size) { var tmp = new byte[len]; Buffer.BlockCopy(_doc,0,tmp,0,len); _doc = tmp; } if(encode) { if(-1 == tcpObj.SendUseEncode(_doc)) { return false; } } else { if(-1 == tcpObj.SendNoEncode(_doc)) { return false; } } start += _doc.Length; if(_rangeTo - start <= 0) break; Thread.Sleep(1); } br.Close(); } fs.Close(); } } return true; }