private IAsyncResult BeginGetClientCertificateCore(AsyncCallback requestCallback, object state) { var asyncResult = new GetClientCertificateAsyncResult(this, state, requestCallback); // The certificate is already retrieved by the time this method is called. GetClientCertificateCore() evaluates to // a simple member access, so this will always complete immediately. ClientCertState = ListenerClientCertState.Completed; asyncResult.InvokeCallback(GetClientCertificateCore()); return(asyncResult); }
public X509Certificate2 EndGetClientCertificate(IAsyncResult asyncResult) { if (asyncResult == null) { throw new ArgumentNullException(nameof(asyncResult)); } GetClientCertificateAsyncResult clientCertAsyncResult = asyncResult as GetClientCertificateAsyncResult; if (clientCertAsyncResult == null || clientCertAsyncResult.AsyncObject != this) { throw new ArgumentException(SR.net_io_invalidasyncresult, nameof(asyncResult)); } if (clientCertAsyncResult.EndCalled) { throw new InvalidOperationException(SR.Format(SR.net_io_invalidendcall, nameof(EndGetClientCertificate))); } clientCertAsyncResult.EndCalled = true; return((X509Certificate2)clientCertAsyncResult.Result); }