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
- SqlDataSource.cs
- TextDataBindingHandler.cs
- GifBitmapEncoder.cs
- SqlCommandSet.cs
- CFGGrammar.cs
- DoubleLinkList.cs
- GPPOINTF.cs
- DefaultBindingPropertyAttribute.cs
- EtwProvider.cs
- ConnectionManagementElementCollection.cs
- DebugView.cs
- Vector3DConverter.cs
- XmlCompatibilityReader.cs
- WebScriptClientGenerator.cs
- PriorityBinding.cs
- WebHttpBindingElement.cs
- MulticastNotSupportedException.cs
- AutoResetEvent.cs
- DataGridViewRowPrePaintEventArgs.cs
- CachedPathData.cs
- Thumb.cs
- DependentTransaction.cs
- NavigationExpr.cs
- Header.cs
- RegistrationProxy.cs
- FixedDocumentSequencePaginator.cs
- AddressAlreadyInUseException.cs
- EntryIndex.cs
- sqlpipe.cs
- HttpContext.cs
- NamedPipeAppDomainProtocolHandler.cs
- FormatVersion.cs
- CodeThrowExceptionStatement.cs
- Rectangle.cs
- ToolStripComboBox.cs
- ToolStripSystemRenderer.cs
- AlignmentYValidation.cs
- AppDomainFactory.cs
- CompilationSection.cs
- CompressionTransform.cs
- updatecommandorderer.cs
- BitmapEffectvisualstate.cs
- InterleavedZipPartStream.cs
- VBIdentifierNameEditor.cs
- MethodBuilder.cs
- PreviewPageInfo.cs
- ListViewInsertedEventArgs.cs
- HashMembershipCondition.cs
- BuildResult.cs
- BypassElement.cs
- CreateUserWizard.cs
- ProofTokenCryptoHandle.cs
- FileIOPermission.cs
- OutputCacheSettingsSection.cs
- References.cs
- shaperfactoryquerycachekey.cs
- LinqDataView.cs
- NameValuePermission.cs
- EmptyReadOnlyDictionaryInternal.cs
- CacheMemory.cs
- IIS7UserPrincipal.cs
- GeometryDrawing.cs
- GridViewRowPresenterBase.cs
- SourceSwitch.cs
- Sql8ConformanceChecker.cs
- Profiler.cs
- OuterGlowBitmapEffect.cs
- SqlDataSourceParameterParser.cs
- SessionEndingCancelEventArgs.cs
- SystemIPInterfaceStatistics.cs
- RightsManagementManager.cs
- NetworkAddressChange.cs
- SmiRequestExecutor.cs
- LineGeometry.cs
- Pair.cs
- PrinterUnitConvert.cs
- TableLayoutColumnStyleCollection.cs
- WorkBatch.cs
- ChangePassword.cs
- milrender.cs
- WebPartAuthorizationEventArgs.cs
- Operand.cs
- Point3DValueSerializer.cs
- AncestorChangedEventArgs.cs
- SpotLight.cs
- LocatorPart.cs
- ClientEventManager.cs
- SmtpFailedRecipientsException.cs
- ProfileProvider.cs
- TriggerBase.cs
- ParameterRetriever.cs
- DesignTimeHTMLTextWriter.cs
- RuntimeEnvironment.cs
- WebInvokeAttribute.cs
- Vector3DAnimationBase.cs
- AnnotationService.cs
- SystemIPGlobalProperties.cs
- CounterSampleCalculator.cs
- CustomValidator.cs
- SocketAddress.cs