압축 -> 암호화 -> 파일 I/O를하는 일련의 스트림이 있다고 가정합니다. 이 같은 동기 I/O,이 보일 것이다 무언가를 사용하여 C#에서 스트림 체인에 비동기 I/O (BeginWrite/BeginRead)가 미치는 영향은 무엇입니까?
:int n=0;
byte[] buffer= new byte[2048];
string inputFileName = "input.txt";
string outputFileName = inputFileName + ".compressed.encrypted";
using (FileStream inputFileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read))
{
using (FileStream outputFileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite))
{
using (Stream encryptor = new EncryptingStream(fs))
{
using (Stream compressor = new CompressorStream(encryptor))
{
while ((n = inputFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
compressor.Write(buffer, 0, n);
}
}
}
}
}
하는 I/O를 FileStream을 제공하는 비동기을 활용하려면, 난 단순히 그러면 BeginWrite를 (사용할 수없는 가정) 메소드를 호출합니다.
이 예제에서는 FileStream에서 비동기 I/O를 사용하기 위해 EncryptingStream이 래핑 된 Stream에서 BeginWrite/EndWrite를 호출하여 Write를 구현해야한다고 생각합니다. 래핑 된 Stream이 FileStream이면 asynch I/O를 얻습니다. 그 맞습니까?
'BeginWrite'라고하는 가장 안쪽의 스트림이 어떻게 될지 궁금한가요? – pomeroy