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
- PropertyTabAttribute.cs
- ComEventsInfo.cs
- ErrorWebPart.cs
- SecurityElement.cs
- SafeLibraryHandle.cs
- XamlRtfConverter.cs
- ImageMap.cs
- DefaultValueTypeConverter.cs
- XmlNodeChangedEventManager.cs
- IRCollection.cs
- MouseGesture.cs
- FixedSOMTextRun.cs
- GZipStream.cs
- OuterGlowBitmapEffect.cs
- ToolStripDropDownMenu.cs
- XPathSelectionIterator.cs
- MimeFormatter.cs
- KeyGestureValueSerializer.cs
- DbConnectionFactory.cs
- ControlIdConverter.cs
- RevocationPoint.cs
- GenericUriParser.cs
- MonthCalendar.cs
- UnionCodeGroup.cs
- Button.cs
- IImplicitResourceProvider.cs
- WmpBitmapDecoder.cs
- ApplicationHost.cs
- nulltextcontainer.cs
- HttpConfigurationSystem.cs
- TypeDependencyAttribute.cs
- ObjectCache.cs
- PropertyReferenceSerializer.cs
- AppDomainAttributes.cs
- IISUnsafeMethods.cs
- Attribute.cs
- URLAttribute.cs
- MemberCollection.cs
- CellParagraph.cs
- MD5.cs
- Unit.cs
- BaseValidator.cs
- basevalidator.cs
- AsnEncodedData.cs
- SQLDouble.cs
- ExtendedProperty.cs
- LineGeometry.cs
- DrawListViewSubItemEventArgs.cs
- EntityDataSourceReferenceGroup.cs
- Typeface.cs
- SafeProcessHandle.cs
- StructuredTypeEmitter.cs
- Model3D.cs
- MatrixTransform.cs
- OLEDB_Enum.cs
- DiagnosticsConfigurationHandler.cs
- StateManagedCollection.cs
- UIPropertyMetadata.cs
- MenuStrip.cs
- XsltSettings.cs
- OpenTypeCommon.cs
- DrawingContextWalker.cs
- BaseValidator.cs
- SafeLocalMemHandle.cs
- NonClientArea.cs
- SiteMapProvider.cs
- X509Certificate2.cs
- BitmapVisualManager.cs
- RsaEndpointIdentity.cs
- ItemsChangedEventArgs.cs
- BypassElementCollection.cs
- LineVisual.cs
- GradientBrush.cs
- RegisteredDisposeScript.cs
- AssemblyAssociatedContentFileAttribute.cs
- KeysConverter.cs
- RewritingProcessor.cs
- RemoteAsymmetricSignatureFormatter.cs
- ForEachAction.cs
- CanonicalXml.cs
- CodeRegionDirective.cs
- Bits.cs
- ActivationArguments.cs
- ReflectionHelper.cs
- Size.cs
- MemberMaps.cs
- ClonableStack.cs
- DbCommandTree.cs
- DropDownButton.cs
- BaseCodeDomTreeGenerator.cs
- ConfigurationManagerInternalFactory.cs
- WorkflowControlClient.cs
- SessionStateModule.cs
- ComplexTypeEmitter.cs
- ColorTransform.cs
- EntityDesignerBuildProvider.cs
- EntityDataSourceChangingEventArgs.cs
- Column.cs
- CallSiteHelpers.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs