static void ReadAsyncCallback(IAsyncResult result)
{
var state = (ReadAsyncCallbackState)result.AsyncState;
var bytesRead = state.FileStream.EndRead(result);
if (bytesRead > 0)
{
Interlocked.Add(ref state.RemainingBytes, -1*bytesRead);
var buffer = new byte[bytesRead];
Array.Copy(state.Buffer, buffer, bytesRead);
var callback = state.Callback;
var remainingBytes = state.RemainingBytes;
EventLoop.Pend(() =>
{
callback(null, remainingBytes, buffer);
});
}
}