Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1305376 / AsyncResult.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Interface: AsyncResult ** ** Purpose: Object to encapsulate the results of an async ** operation ** ===========================================================*/ namespace System.Runtime.Remoting.Messaging { using System.Threading; using System.Runtime.Remoting; using System; using System.Security.Permissions; [System.Runtime.InteropServices.ComVisible(true)] public class AsyncResult : IAsyncResult, IMessageSink { [System.Security.SecurityCritical] // auto-generated internal AsyncResult(Message m) { m.GetAsyncBeginInfo(out _acbd, out _asyncState); _asyncDelegate = (Delegate) m.GetThisPtr(); } // True if the asynchronous operation has been completed. public virtual bool IsCompleted { get { return _isCompleted; } } // The delegate object on which the async call was invoked. public virtual Object AsyncDelegate { get { return _asyncDelegate; } } // The state object passed in via BeginInvoke. public virtual Object AsyncState { get { return _asyncState; } } public virtual bool CompletedSynchronously { get { return false; } } public bool EndInvokeCalled { get { return _endInvokeCalled; } set { BCLDebug.Assert(!_endInvokeCalled && value, "EndInvoke prevents multiple calls"); _endInvokeCalled = value; } } private void FaultInWaitHandle() { lock(this) { if (_AsyncWaitHandle == null) { _AsyncWaitHandle = new ManualResetEvent(false); } } } public virtual WaitHandle AsyncWaitHandle { get { FaultInWaitHandle(); return _AsyncWaitHandle; } } public virtual void SetMessageCtrl(IMessageCtrl mc) { _mc = mc; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessage SyncProcessMessage(IMessage msg) { if (msg == null) { _replyMsg = new ReturnMessage(new RemotingException(Environment.GetResourceString("Remoting_NullMessage")), new ErrorMessage()); } else if (!(msg is IMethodReturnMessage)) { _replyMsg = new ReturnMessage(new RemotingException(Environment.GetResourceString("Remoting_Message_BadType")), new ErrorMessage()); } else { _replyMsg = msg; } _isCompleted = true; FaultInWaitHandle(); _AsyncWaitHandle.Set(); if (_acbd != null) { // NOTE: We are invoking user code here! // Catch and Ignore exceptions thrown from async callback user code. _acbd(this); } return null; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [System.Security.SecurityCritical] // auto-generated_required get { return null; } } public virtual IMessage GetReplyMessage() {return _replyMsg;} private IMessageCtrl _mc; private AsyncCallback _acbd; private IMessage _replyMsg; private bool _isCompleted; private bool _endInvokeCalled; private ManualResetEvent _AsyncWaitHandle; private Delegate _asyncDelegate; private Object _asyncState; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventBuilder.cs
- Package.cs
- ZipIOLocalFileBlock.cs
- MetadataSection.cs
- StrongNameIdentityPermission.cs
- GACMembershipCondition.cs
- ObservableDictionary.cs
- StringArrayConverter.cs
- InvalidateEvent.cs
- InstanceOwnerException.cs
- StoreItemCollection.Loader.cs
- ReadOnlyMetadataCollection.cs
- FormViewPageEventArgs.cs
- NetworkAddressChange.cs
- RoutedUICommand.cs
- KeyValueConfigurationCollection.cs
- HttpConfigurationContext.cs
- ResourceDescriptionAttribute.cs
- VScrollProperties.cs
- UrlPath.cs
- DbParameterCollectionHelper.cs
- DefaultCompensation.cs
- Memoizer.cs
- ForeignKeyConstraint.cs
- _LazyAsyncResult.cs
- StateInitializationDesigner.cs
- DetailsViewPageEventArgs.cs
- ImageButton.cs
- Constants.cs
- ContentValidator.cs
- Hex.cs
- DataSourceGeneratorException.cs
- RectangleGeometry.cs
- DeadCharTextComposition.cs
- ConvertEvent.cs
- ValueUtilsSmi.cs
- ColorBlend.cs
- LiteralControl.cs
- ReflectionServiceProvider.cs
- XmlSchemas.cs
- XmlSchemaComplexContentExtension.cs
- RewritingPass.cs
- XmlSchemaDocumentation.cs
- OdbcCommandBuilder.cs
- DecimalAnimationUsingKeyFrames.cs
- EventPropertyMap.cs
- DescendentsWalker.cs
- IQueryable.cs
- FileClassifier.cs
- InstanceCollisionException.cs
- DataGridViewMethods.cs
- DefinitionBase.cs
- SqlRowUpdatedEvent.cs
- SubMenuStyle.cs
- StreamGeometryContext.cs
- RootBrowserWindowProxy.cs
- DataGridViewRowPostPaintEventArgs.cs
- HGlobalSafeHandle.cs
- GradientBrush.cs
- PointValueSerializer.cs
- WaitHandleCannotBeOpenedException.cs
- RoleServiceManager.cs
- SqlLiftWhereClauses.cs
- XslAstAnalyzer.cs
- PeerName.cs
- SigningCredentials.cs
- ResourcesGenerator.cs
- DataPagerFieldCollection.cs
- MimeWriter.cs
- VectorAnimation.cs
- AuthorizationRuleCollection.cs
- FormParameter.cs
- ResourceCollectionInfo.cs
- PasswordRecovery.cs
- WorkBatch.cs
- ValueType.cs
- DoubleIndependentAnimationStorage.cs
- PersonalizationStateQuery.cs
- TextLine.cs
- ContentWrapperAttribute.cs
- ValidationError.cs
- Win32Exception.cs
- x509utils.cs
- Metafile.cs
- CorrelationKey.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- HttpContextBase.cs
- Matrix3DValueSerializer.cs
- OutputCacheSettingsSection.cs
- UrlAuthorizationModule.cs
- HtmlInputControl.cs
- NextPreviousPagerField.cs
- SQLDateTimeStorage.cs
- RegistrationContext.cs
- Token.cs
- OleDbStruct.cs
- StringResourceManager.cs
- QuadraticBezierSegment.cs
- WebPartExportVerb.cs
- RequestResizeEvent.cs