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

Reply via email to