private static void WriteCallback(IAsyncResult asyncResult) { AsyncStreamOperations writer = (AsyncStreamOperations)asyncResult.AsyncState; writer.stream.EndWrite(asyncResult); writer.Dispose(); if (writer.writerCallback != null) { writer.writerCallback(writer.userState); } writer = null; }
private static void ReadCallback(IAsyncResult asyncResult) { AsyncStreamOperations loader = (AsyncStreamOperations)asyncResult.AsyncState; int loaded = loader.stream.EndRead(asyncResult); if (asyncResult.IsCompleted && loaded > 0) { loader.memoryStream.Write(loader.tileBodyPart, 0, loaded); loader.stream.BeginRead(loader.tileBodyPart, 0, TileBodyPartLength, ReadCallback, loader); return; } byte[] tile = loader.memoryStream.ToArray(); loader.Dispose(); loader.readerCallback(tile); loader = null; }