Need an explanation on this code - c#
        Posted  
        
            by ltech
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by ltech
        
        
        
        Published on 2010-04-14T15:12:33Z
        Indexed on 
            2010/04/14
            15:13 UTC
        
        
        Read the original article
        Hit count: 338
        
c#3.0
I am getting familiar with C# day by day and I came across this piece of code
public static void CopyStreamToStream(
Stream source, Stream destination, 
Action<Stream,Stream,Exception> completed) {
byte[] buffer = new byte[0x1000];
AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(null);
Action<Exception> done = e => {
    if (completed != null) asyncOp.Post(delegate { 
        completed(source, destination, e); }, null);
};
AsyncCallback rc = null;
rc = readResult => {
    try {
        int read = source.EndRead(readResult);
        if (read > 0) {
            destination.BeginWrite(buffer, 0, read, writeResult => {
                try {
                    destination.EndWrite(writeResult);
                    source.BeginRead(
                        buffer, 0, buffer.Length, rc, null);
                }
                catch (Exception exc) { done(exc); }
            }, null);
        }
        else done(null);
    }
    catch (Exception exc) { done(exc); }
};
source.BeginRead(buffer, 0, buffer.Length, rc, null);
}
From this article Article
What I fail to follow is that how does the delegate get notified that the copy is done? Say after the copy is done I want to perform an operation on the copied file.
© Stack Overflow or respective owner