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
- Pkcs7Signer.cs
- UDPClient.cs
- DataServiceQueryProvider.cs
- ElementUtil.cs
- ServiceContractViewControl.Designer.cs
- Journal.cs
- HtmlElementEventArgs.cs
- IndentTextWriter.cs
- WindowsUpDown.cs
- CompilerState.cs
- StringArrayConverter.cs
- ToolboxItemSnapLineBehavior.cs
- ModuleElement.cs
- PixelFormat.cs
- RTLAwareMessageBox.cs
- DataListItemEventArgs.cs
- WebPartEditorOkVerb.cs
- ItemType.cs
- RunClient.cs
- StoreItemCollection.cs
- PackWebResponse.cs
- ServiceEndpointCollection.cs
- EncryptedPackageFilter.cs
- IDReferencePropertyAttribute.cs
- AuthenticationManager.cs
- CqlQuery.cs
- GridViewItemAutomationPeer.cs
- CollectionBase.cs
- DataGridViewColumnStateChangedEventArgs.cs
- PrivilegedConfigurationManager.cs
- ConstraintCollection.cs
- Item.cs
- BitVector32.cs
- TextDecoration.cs
- BindingGroup.cs
- DataColumn.cs
- Bezier.cs
- localization.cs
- XmlNullResolver.cs
- WebPartAuthorizationEventArgs.cs
- DBParameter.cs
- TimelineGroup.cs
- PropertyFilter.cs
- BufferBuilder.cs
- XmlWrappingReader.cs
- SoapHeaderAttribute.cs
- ZipFileInfo.cs
- MetadataItemSerializer.cs
- WebHttpSecurityElement.cs
- Tuple.cs
- Sentence.cs
- WorkflowRuntimeElement.cs
- PageCodeDomTreeGenerator.cs
- PixelFormats.cs
- InProcStateClientManager.cs
- FixedSOMElement.cs
- CultureSpecificStringDictionary.cs
- CompoundFileStorageReference.cs
- PixelFormats.cs
- Hashtable.cs
- DbDataAdapter.cs
- FixedPosition.cs
- CodeGeneratorOptions.cs
- Section.cs
- FacetDescriptionElement.cs
- ArgumentElement.cs
- WebHostedComPlusServiceHost.cs
- Int32RectValueSerializer.cs
- TypeResolver.cs
- DependencyObjectProvider.cs
- FormsAuthenticationConfiguration.cs
- ToolStripContainer.cs
- ModifierKeysValueSerializer.cs
- UInt64Converter.cs
- RuleConditionDialog.Designer.cs
- Transform.cs
- TextUtf8RawTextWriter.cs
- EmptyTextWriter.cs
- XmlQualifiedNameTest.cs
- EventEntry.cs
- GenericEnumerator.cs
- ManifestResourceInfo.cs
- FusionWrap.cs
- DesignParameter.cs
- TrackingRecord.cs
- SHA256Managed.cs
- SettingsPropertyValue.cs
- TextTreeRootNode.cs
- StyleModeStack.cs
- OneOfElement.cs
- ToolStripSeparatorRenderEventArgs.cs
- DataControlCommands.cs
- DetailsViewInsertedEventArgs.cs
- QueryCacheKey.cs
- XmlSchemaDocumentation.cs
- ScopeCompiler.cs
- ObjectToIdCache.cs
- Image.cs
- XmlProcessingInstruction.cs
- SvcMapFileLoader.cs