System.Runtime.AsyncResult abstract class AsyncResult : IAsyncResult Documentation Code protected sealed delegate AsyncCompletion : MulticastDelegate public object AsyncState { get; } public WaitHandle AsyncWaitHandle { get; } public bool CompletedSynchronously { get; } public bool HasCallback { get; } public bool IsCompleted { get; } protected Action<AsyncResult, Exception> OnCompleting { get; protected set; } protected Action<AsyncCallback, IAsyncResult> VirtualCallback { get; protected set; } protected AsyncResult(AsyncCallback callback, object state) protected static TAsyncResult End<TAsyncResult>(IAsyncResult result) where TAsyncResult : AsyncResult protected static void ThrowInvalidAsyncResult(IAsyncResult result) protected static void ThrowInvalidAsyncResult(string debugText) protected bool CheckSyncContinue(IAsyncResult result) protected void Complete(bool completedSynchronously) protected void Complete(bool completedSynchronously, Exception exception) protected virtual bool OnContinueAsyncCompletion(IAsyncResult result) protected AsyncCallback PrepareAsyncCompletion(AsyncCompletion callback) protected void SetBeforePrepareAsyncCompletionAction(Action beforePrepareAsyncCompletionAction) protected void SetCheckSyncValidationFunc(Func<IAsyncResult, bool> checkSyncValidationFunc) protected bool SyncContinue(IAsyncResult result)