Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ActiveXSite.cs
- MissingManifestResourceException.cs
- DoubleAnimationUsingKeyFrames.cs
- BuildProvider.cs
- SoapEnumAttribute.cs
- odbcmetadatafactory.cs
- ActivityValidationServices.cs
- DiscoveryClientReferences.cs
- TraceListener.cs
- SiteMapProvider.cs
- BlobPersonalizationState.cs
- Graphics.cs
- FacetDescriptionElement.cs
- ReadOnlyNameValueCollection.cs
- TransformerInfo.cs
- CodeDelegateCreateExpression.cs
- DynamicField.cs
- TextEditorSpelling.cs
- HScrollBar.cs
- EditorZone.cs
- ListViewCommandEventArgs.cs
- ListItemParagraph.cs
- SspiWrapper.cs
- ColumnResizeAdorner.cs
- Int64Storage.cs
- TreeView.cs
- SafeNativeMethods.cs
- BackStopAuthenticationModule.cs
- DBAsyncResult.cs
- UserControlBuildProvider.cs
- FormatConvertedBitmap.cs
- TextEditorCharacters.cs
- MoveSizeWinEventHandler.cs
- HashUtility.cs
- EpmSyndicationContentSerializer.cs
- HyperLinkColumn.cs
- WasNotInstalledException.cs
- AuthenticationModuleElementCollection.cs
- fixedPageContentExtractor.cs
- TargetInvocationException.cs
- HelpKeywordAttribute.cs
- IdentitySection.cs
- XmlException.cs
- IInstanceTable.cs
- PropertyTabAttribute.cs
- FieldNameLookup.cs
- Pair.cs
- Binding.cs
- WeakRefEnumerator.cs
- UnsafeNativeMethods.cs
- StringTraceRecord.cs
- ISAPIRuntime.cs
- DispatcherFrame.cs
- MetaForeignKeyColumn.cs
- DataGridViewCellConverter.cs
- ConnectionInterfaceCollection.cs
- RangeValueProviderWrapper.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- Stack.cs
- BehaviorEditorPart.cs
- InvalidFilterCriteriaException.cs
- ThicknessAnimationBase.cs
- EllipticalNodeOperations.cs
- HttpModuleCollection.cs
- WebPartAuthorizationEventArgs.cs
- CapabilitiesRule.cs
- BinaryConverter.cs
- TraceProvider.cs
- GridItemPatternIdentifiers.cs
- Model3DGroup.cs
- SortFieldComparer.cs
- QuadraticBezierSegment.cs
- XmlAttributeOverrides.cs
- ToolBarButtonClickEvent.cs
- PersonalizationProvider.cs
- PointHitTestParameters.cs
- GenericTypeParameterBuilder.cs
- SchemaNotation.cs
- BatchParser.cs
- XXXOnTypeBuilderInstantiation.cs
- DataFormats.cs
- Perspective.cs
- LinearGradientBrush.cs
- NodeFunctions.cs
- XhtmlBasicValidatorAdapter.cs
- Compiler.cs
- WSTrustDec2005.cs
- RealizationContext.cs
- NameValueCollection.cs
- QueryConverter.cs
- SpecialFolderEnumConverter.cs
- UpDownBase.cs
- DesignerVerbCollection.cs
- RegisteredExpandoAttribute.cs
- ExcludePathInfo.cs
- ListViewTableRow.cs
- login.cs
- ImplicitInputBrush.cs
- ZipIOFileItemStream.cs
- StringUtil.cs