I recently had a similar need... maybe this will help you? http://www.windojitsu.com/code/asyncstreampump.cs.html
In my case, I wanted to tap the two streams together, asynchronously... so I use async I/O (viz. Stream.BeginRead). Heed the warning in the comments: although this technique will appear to work on just any ol stream, if the source stream doesn't actually support aync (eg: a FileStream opened with useasync=false) it will attempt to work synchronously -- by looping recursively on your BeginRead calls! This can easily overflow the stack. (That's bad.) I put a check in there for the special case of FileStream.IsAsync -- but sadly, there is no way to ask a generic Stream if it's going to spam your stack if you call BeginRead. MS, if you're listening: please consider promoting the IsAsync property up to the Stream base class, ok? This whole "simulate async behavior by feeding syncronous data, recursively" design is just awful -- I'm sure it sounded nifty at the time, but it completely disrespects the non-blocking semantics of BeginRead, and the potential for stack overflow is just unacceptable. Cheers, -Shawn http://www.windojitsu.com/ -----Original Message----- From: Alex Ivanoff [mailto:[EMAIL PROTECTED] Sent: Thursday, February 19, 2004 15:05 Subject: What happened to stream CopyTo? I want to copy one stream to another. In unmanaged world I would use IStream::CopyTo. In .NET the only way I see is to do pairs of Read/Write. What happened to CopyTo? =================================== This list is hosted by DevelopMentorR http://www.develop.com Some .NET courses you may be interested in: NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles http://www.develop.com/courses/gaspdotnetls View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorŪ http://www.develop.com Some .NET courses you may be interested in: NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles http://www.develop.com/courses/gaspdotnetls View archives and manage your subscription(s) at http://discuss.develop.com