/// <summary>
 ///     设置文件读取
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 private bool set(TmphReader reader)
 {
     TmphInterlocked.NoCheckCompareSetSleep0(ref readerLock);
     if (currentReader == null)
     {
         currentReader = reader;
         readerLock = 0;
         reader.FileStream = this;
         return true;
     }
     currentReader.Next = reader;
     readerLock = 0;
     return false;
 }
 /// <summary>
 ///     读取下一个文件数据
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 private TmphReader next(TmphReader reader)
 {
     TmphInterlocked.NoCheckCompareSetSleep0(ref readerLock);
     var nextReader = reader.Next;
     if (nextReader == null) currentReader = null;
     else if ((reader.Next = nextReader.Next) == null) currentReader = reader;
     readerLock = 0;
     return nextReader;
 }
 /// <summary>
 ///     文件读取
 /// </summary>
 /// <param name="index">读取文件位置</param>
 /// <param name="onReaded">读取文件回调函数</param>
 /// <returns></returns>
 public static TmphReader Get(TmphIndex index,
     Func<TmphAsynchronousMethod.TmphReturnValue<TmphTcpBase.TmphSubByteArrayEvent>, bool> onReaded)
 {
     var reader = TmphTypePool<TmphReader>.Pop();
     if (reader == null)
     {
         try
         {
             reader = new TmphReader();
         }
         catch
         {
             return null;
         }
     }
     reader.onReaded = onReaded;
     reader.index = index;
     return reader;
 }
 /// <summary>
 ///     等待缓存写入
 /// </summary>
 /// <param name="reader"></param>
 private void wait(TmphReader reader)
 {
     var endIndex = reader.EndIndex;
     if (endIndex <= fileLength)
     {
         if (set(reader)) reader.Read();
         return;
     }
     flush(true);
     if (isDisposed == 0)
     {
         if (set(reader)) reader.Read();
     }
     else reader.Cancel();
 }