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
- XPathNodeInfoAtom.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TemplateXamlTreeBuilder.cs
- Utils.cs
- PageStatePersister.cs
- HttpDictionary.cs
- DataGridViewRowsRemovedEventArgs.cs
- VerificationException.cs
- OdbcInfoMessageEvent.cs
- CfgRule.cs
- HtmlImage.cs
- BidPrivateBase.cs
- PropertyDescriptorCollection.cs
- LocatorGroup.cs
- MemoryRecordBuffer.cs
- _SslState.cs
- Monitor.cs
- AffineTransform3D.cs
- PeerApplication.cs
- ProbeRequestResponseAsyncResult.cs
- DateTimeConstantAttribute.cs
- RpcAsyncResult.cs
- CapabilitiesRule.cs
- MediaPlayerState.cs
- ClientScriptManager.cs
- GACIdentityPermission.cs
- SqlBinder.cs
- PolyBezierSegment.cs
- DataFormats.cs
- XmlArrayItemAttribute.cs
- TextDpi.cs
- MetadataArtifactLoaderCompositeFile.cs
- RemotingConfigParser.cs
- FontStretches.cs
- AdapterUtil.cs
- UserMapPath.cs
- VirtualPathProvider.cs
- RightsManagementEncryptedStream.cs
- TextTreeExtractElementUndoUnit.cs
- ToolboxDataAttribute.cs
- ResourcePermissionBaseEntry.cs
- SQlBooleanStorage.cs
- HtmlControlPersistable.cs
- StringAnimationUsingKeyFrames.cs
- GridViewEditEventArgs.cs
- HttpCapabilitiesSectionHandler.cs
- CalendarDataBindingHandler.cs
- PriorityChain.cs
- TableDetailsCollection.cs
- ObjectCloneHelper.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- DataServiceStreamProviderWrapper.cs
- _KerberosClient.cs
- UnsafeNativeMethods.cs
- SafeCryptContextHandle.cs
- DataGridColumnCollection.cs
- DataTable.cs
- SqlUserDefinedTypeAttribute.cs
- SqlConnectionFactory.cs
- SymLanguageVendor.cs
- XmlNodeWriter.cs
- BackgroundWorker.cs
- EnumMemberAttribute.cs
- PropertyDescriptorGridEntry.cs
- WebResourceUtil.cs
- MSHTMLHost.cs
- SecurityContextSecurityTokenParameters.cs
- RenderData.cs
- TypeDescriptorFilterService.cs
- HandlerFactoryCache.cs
- Semaphore.cs
- RelatedCurrencyManager.cs
- QfeChecker.cs
- TextRange.cs
- OledbConnectionStringbuilder.cs
- FixedTextContainer.cs
- DockPatternIdentifiers.cs
- FunctionDescription.cs
- AudioSignalProblemOccurredEventArgs.cs
- ModuleBuilder.cs
- AuthorizationRule.cs
- DataGridViewHeaderCell.cs
- SafePointer.cs
- InArgument.cs
- InstallerTypeAttribute.cs
- ColumnTypeConverter.cs
- DBConnection.cs
- InheritedPropertyChangedEventArgs.cs
- FormParameter.cs
- CollectionChangedEventManager.cs
- DataControlPagerLinkButton.cs
- SystemException.cs
- CodeArgumentReferenceExpression.cs
- XmlEventCache.cs
- CodeValidator.cs
- PrePostDescendentsWalker.cs
- SafeTokenHandle.cs
- RightsManagementPermission.cs
- AdvancedBindingPropertyDescriptor.cs
- StateMachineDesignerPaint.cs