// シリアルポート --> 抽象 Stream protected override async Task <bool> StreamReadFromObjectImplAsync(FastStreamBuffer fifo, CancellationToken cancel) { if (this.SerialPort.IsOpen == false) { throw new FastBufferDisconnectedException(); } await TaskUtil.DoAsyncWithTimeout( async c => { using (MemoryHelper.FastAllocMemoryWithUsing(RecvTmpBufferSize, out Memory <byte> buffer)) { int recvSize = await this.Stream.ReadAsync(buffer, cancel); if (recvSize <= 0) { fifo.Disconnect(); return(0); } fifo.EnqueueWithLock(buffer._SliceHead(recvSize)._CloneMemory(), true); } return(0); }, cancelProc : () => { this.SerialPort.Close(); }, cancel : cancel); return(true); }