Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1 / 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 { 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(_isCompleted); } } } public virtual WaitHandle AsyncWaitHandle { get { FaultInWaitHandle(); return _AsyncWaitHandle; } } public virtual void SetMessageCtrl(IMessageCtrl mc) { _mc = mc; } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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; } lock (this) { _isCompleted = true; if (_AsyncWaitHandle != null) { _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; } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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. // ==++== // // 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 { 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(_isCompleted); } } } public virtual WaitHandle AsyncWaitHandle { get { FaultInWaitHandle(); return _AsyncWaitHandle; } } public virtual void SetMessageCtrl(IMessageCtrl mc) { _mc = mc; } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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; } lock (this) { _isCompleted = true; if (_AsyncWaitHandle != null) { _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; } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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
- HtmlShimManager.cs
- BitStack.cs
- AdornerPresentationContext.cs
- XmlSerializerFactory.cs
- AlphabeticalEnumConverter.cs
- DataGridViewComboBoxCell.cs
- OracleNumber.cs
- CodeChecksumPragma.cs
- TextEndOfSegment.cs
- GeometryCombineModeValidation.cs
- SmtpDateTime.cs
- SqlDataSourceCommandEventArgs.cs
- ItemsControlAutomationPeer.cs
- BaseParagraph.cs
- TemplatedControlDesigner.cs
- PackageDigitalSignatureManager.cs
- MeshGeometry3D.cs
- RadialGradientBrush.cs
- SqlAliasesReferenced.cs
- FilterQueryOptionExpression.cs
- DataBindingHandlerAttribute.cs
- ImageAnimator.cs
- SoapInteropTypes.cs
- WebPartPersonalization.cs
- SlipBehavior.cs
- BitmapCodecInfoInternal.cs
- ActiveXHelper.cs
- ModelMemberCollection.cs
- MasterPage.cs
- ConnectionsZoneDesigner.cs
- ComPlusTypeValidator.cs
- SapiAttributeParser.cs
- UInt32Storage.cs
- ActivationArguments.cs
- TextParagraphCache.cs
- SqlNotificationEventArgs.cs
- StringUtil.cs
- CompilerGeneratedAttribute.cs
- AnnotationComponentChooser.cs
- ProxyFragment.cs
- __Error.cs
- TrackingDataItem.cs
- ReadOnlyKeyedCollection.cs
- CustomCategoryAttribute.cs
- Misc.cs
- HandlerBase.cs
- Knowncolors.cs
- DesignerVerb.cs
- SapiRecognizer.cs
- ObjectQueryProvider.cs
- CqlBlock.cs
- RelatedEnd.cs
- wmiprovider.cs
- NamedObject.cs
- AnnotationHelper.cs
- OdbcPermission.cs
- Baml6ConstructorInfo.cs
- ObjectRef.cs
- EmbeddedMailObject.cs
- GridViewPageEventArgs.cs
- PeerApplication.cs
- lengthconverter.cs
- SessionStateUtil.cs
- StructuredType.cs
- Vector3DCollectionConverter.cs
- WebPermission.cs
- CustomAttribute.cs
- EnumerableRowCollectionExtensions.cs
- TimerElapsedEvenArgs.cs
- ProfilePropertySettingsCollection.cs
- DataSetMappper.cs
- XDRSchema.cs
- HashSetEqualityComparer.cs
- oledbmetadatacolumnnames.cs
- UpdateProgress.cs
- EntityCodeGenerator.cs
- DragDeltaEventArgs.cs
- BaseConfigurationRecord.cs
- XPathMultyIterator.cs
- QilPatternVisitor.cs
- DiscoveryClientDocuments.cs
- InheritanceService.cs
- PropertyInfoSet.cs
- SqlHelper.cs
- DataRowComparer.cs
- StringFunctions.cs
- Manipulation.cs
- TableLayoutStyle.cs
- InputMethod.cs
- XmlUtilWriter.cs
- WriteLine.cs
- Attributes.cs
- DateTimeFormatInfoScanner.cs
- EntityObject.cs
- ParagraphVisual.cs
- MenuItemBindingCollection.cs
- Triangle.cs
- ZipIOExtraFieldElement.cs
- DataBoundLiteralControl.cs
- ApplicationTrust.cs