コード例 #1
0
 public override int Read(byte[] buffer, int offset, int count)
 {
     if (CanRead)
     {
         uint requestId;
         var  waitHandle = sftp.CreateWaitHandle(out requestId);
         sftp.session.Socket.WritePacket(new SftpRead(sftp.RemoteChannel, requestId, handle, Convert.ToUInt64(Position), Convert.ToUInt32(count)));
         waitHandle.WaitOne();
         byte[] data = new byte[0];
         if (waitHandle.Result != null)
         {
             data = ((SftpData)waitHandle.Result).Data;
             Buffer.BlockCopy(data, 0, buffer, offset, data.Length);
             Position += data.Length;
         }
         sftp.DestroyWaitHandle(requestId);
         return(data.Length);
     }
     else
     {
         throw new IOException("Stream cannot be read from.");
     }
 }