/// <summary> /// 对收到的帧进行分类。 /// </summary> protected async void HandleAnswers() { try { while (true) { FrameBase frame = await base.Answers.WaitAsync(-1); switch (frame) { case RedirectedOutputFrame redirectedOutputFrame: { RedirectedOutputFrames.Release(redirectedOutputFrame); } break; case RedirectedErrorFrame redirectedErrorFrame: { RedirectedErrorFrames.Release(redirectedErrorFrame); } break; default: { OtherFrames.Release(frame); } break; } } } catch { } }
public override void Dispose() { base.Dispose(); if (!Disposed) { Disposed = true; RedirectedOutputFrames.Dispose(); RedirectedErrorFrames.Dispose(); OtherFrames.Dispose(); } }
/// <summary> /// 读取错误输出。 /// </summary> /// <exception cref="Exception"></exception> /// <returns></returns> public async Task <string> ReadStandardErrorAsync() { if (Started) { RedirectedErrorFrame frame = await RedirectedErrorFrames.WaitAsync(-1).ConfigureAwait(false); if (frame.Exited) { Exited = true; } return(frame.Data); } else { throw new InvalidOperationException(); } }