Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1305376 / 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 { [System.Security.SecurityCritical] // auto-generated 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(false); } } } public virtual WaitHandle AsyncWaitHandle { get { FaultInWaitHandle(); return _AsyncWaitHandle; } } public virtual void SetMessageCtrl(IMessageCtrl mc) { _mc = mc; } [System.Security.SecurityCritical] // auto-generated_required 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; } _isCompleted = true; FaultInWaitHandle(); _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; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [System.Security.SecurityCritical] // auto-generated_required 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 { [System.Security.SecurityCritical] // auto-generated 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(false); } } } public virtual WaitHandle AsyncWaitHandle { get { FaultInWaitHandle(); return _AsyncWaitHandle; } } public virtual void SetMessageCtrl(IMessageCtrl mc) { _mc = mc; } [System.Security.SecurityCritical] // auto-generated_required 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; } _isCompleted = true; FaultInWaitHandle(); _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; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [System.Security.SecurityCritical] // auto-generated_required 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
- OdbcDataReader.cs
- HtmlWindow.cs
- RoutedEventHandlerInfo.cs
- DispatchChannelSink.cs
- Literal.cs
- StyleHelper.cs
- MsdtcClusterUtils.cs
- invalidudtexception.cs
- DesignTimeVisibleAttribute.cs
- GrammarBuilder.cs
- FrameSecurityDescriptor.cs
- TraceSection.cs
- RelationshipNavigation.cs
- BuildResult.cs
- TextPattern.cs
- BitmapCodecInfoInternal.cs
- LoginName.cs
- DefaultMergeHelper.cs
- _SslSessionsCache.cs
- ExpressionReplacer.cs
- BamlBinaryWriter.cs
- GlyphingCache.cs
- TableSectionStyle.cs
- MSAAEventDispatcher.cs
- BookmarkScope.cs
- URIFormatException.cs
- AnnotationComponentChooser.cs
- BinaryConverter.cs
- SQLString.cs
- ScriptManagerProxy.cs
- ReadOnlyKeyedCollection.cs
- UriTemplateDispatchFormatter.cs
- StreamingContext.cs
- StringArrayConverter.cs
- DllNotFoundException.cs
- AccessDataSourceView.cs
- SmtpFailedRecipientException.cs
- AuthorizationBehavior.cs
- ObjectDataSource.cs
- BindingsCollection.cs
- GenericRootAutomationPeer.cs
- CursorConverter.cs
- NativeMethods.cs
- NetCodeGroup.cs
- Coordinator.cs
- AnnotationAuthorChangedEventArgs.cs
- DragCompletedEventArgs.cs
- CaseStatementSlot.cs
- TypeConvertions.cs
- DataColumnPropertyDescriptor.cs
- HtmlTableCell.cs
- securitycriticaldata.cs
- SystemTcpStatistics.cs
- QueryableDataSource.cs
- StorageBasedPackageProperties.cs
- DropTarget.cs
- ToolStripRenderEventArgs.cs
- XPathNavigator.cs
- MenuAutomationPeer.cs
- EnumValAlphaComparer.cs
- IntSecurity.cs
- EntityTypeEmitter.cs
- ChildrenQuery.cs
- Convert.cs
- AttachmentCollection.cs
- CodeAccessPermission.cs
- XmlSiteMapProvider.cs
- ExponentialEase.cs
- ForeignKeyConstraint.cs
- PersonalizationProvider.cs
- BufferedGraphicsManager.cs
- OwnerDrawPropertyBag.cs
- AsymmetricSignatureDeformatter.cs
- TreeNodeEventArgs.cs
- GlyphingCache.cs
- RemotingSurrogateSelector.cs
- GlyphTypeface.cs
- Int32Converter.cs
- FontSource.cs
- BitmapSourceSafeMILHandle.cs
- WriteableBitmap.cs
- XPathSelectionIterator.cs
- BrowserCapabilitiesFactory.cs
- MultiDataTrigger.cs
- SurrogateSelector.cs
- ParentUndoUnit.cs
- ExecutionTracker.cs
- SettingsPropertyWrongTypeException.cs
- KeyPullup.cs
- RemotingConfiguration.cs
- GlyphRunDrawing.cs
- XmlILModule.cs
- DataControlPagerLinkButton.cs
- SizeAnimationBase.cs
- TextEmbeddedObject.cs
- oledbmetadatacollectionnames.cs
- SqlCommandBuilder.cs
- WebPartDescriptionCollection.cs
- OptimizerPatterns.cs
- NumericUpDownAcceleration.cs