private void Channel_Closed(object sender, ChannelEventArgs e)
{
var outputStream = OutputStream;
if (outputStream != null)
{
outputStream.Flush();
}
var extendedOutputStream = ExtendedOutputStream;
if (extendedOutputStream != null)
{
extendedOutputStream.Flush();
}
_asyncResult.IsCompleted = true;
if (_callback != null)
{
// Execute callback on different thread
ThreadAbstraction.ExecuteThread(() => _callback(_asyncResult));
}
((EventWaitHandle) _asyncResult.AsyncWaitHandle).Set();
}