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
- StringFreezingAttribute.cs
- UpdateRecord.cs
- ObjectQueryState.cs
- XPathSelectionIterator.cs
- ReferentialConstraint.cs
- ProviderBase.cs
- HttpHandlersSection.cs
- SizeAnimationBase.cs
- SchemaImporterExtension.cs
- BaseCodePageEncoding.cs
- PinnedBufferMemoryStream.cs
- RuntimeConfigLKG.cs
- SchemaImporter.cs
- AspCompat.cs
- SchemaImporterExtensionElementCollection.cs
- BoolExpressionVisitors.cs
- OleDbParameterCollection.cs
- RootBrowserWindowAutomationPeer.cs
- XmlName.cs
- State.cs
- UnSafeCharBuffer.cs
- TreeView.cs
- TextDecoration.cs
- SafeLibraryHandle.cs
- CollectionViewProxy.cs
- DataGridViewColumnCollectionEditor.cs
- BuildResult.cs
- CodeRemoveEventStatement.cs
- RouteParameter.cs
- Win32Native.cs
- CodeTypeReference.cs
- CreationContext.cs
- WeakReadOnlyCollection.cs
- TypeConverter.cs
- Tuple.cs
- Pens.cs
- DeferredTextReference.cs
- SchemaMapping.cs
- PagePropertiesChangingEventArgs.cs
- sqlinternaltransaction.cs
- RSAPKCS1SignatureFormatter.cs
- WriteTimeStream.cs
- BitHelper.cs
- EntitySqlQueryCacheEntry.cs
- RTTrackingProfile.cs
- DeclarativeCatalogPartDesigner.cs
- _ContextAwareResult.cs
- SecureEnvironment.cs
- TableCell.cs
- WebPartConnectionCollection.cs
- TextOnlyOutput.cs
- SweepDirectionValidation.cs
- TdsParserSafeHandles.cs
- BuildDependencySet.cs
- CallTemplateAction.cs
- HandlerElement.cs
- InfoCardArgumentException.cs
- CurrentChangedEventManager.cs
- HttpApplication.cs
- DataGridRelationshipRow.cs
- ChannelProtectionRequirements.cs
- TextRenderingModeValidation.cs
- TraceContextEventArgs.cs
- DependencyProperty.cs
- Literal.cs
- BeginGetFileNameFromUserRequest.cs
- AppDomainCompilerProxy.cs
- CqlIdentifiers.cs
- SafeRegistryHandle.cs
- ProfileEventArgs.cs
- OracleDateTime.cs
- EdmProviderManifest.cs
- PeerResolver.cs
- UTF32Encoding.cs
- ProfileModule.cs
- ToolStripOverflow.cs
- thaishape.cs
- SynchronizationContextHelper.cs
- WebScriptClientGenerator.cs
- DefaultTraceListener.cs
- SourceItem.cs
- FormatVersion.cs
- CqlErrorHelper.cs
- ReachPageContentCollectionSerializer.cs
- SelectionItemProviderWrapper.cs
- DefaultMemberAttribute.cs
- NotifyCollectionChangedEventArgs.cs
- FontNamesConverter.cs
- ProgressiveCrcCalculatingStream.cs
- ApplicationSecurityInfo.cs
- Hash.cs
- LineServices.cs
- MailMessageEventArgs.cs
- ParallelDesigner.xaml.cs
- NativeMethods.cs
- TargetInvocationException.cs
- FacetValueContainer.cs
- FigureHelper.cs
- MetadataPropertyvalue.cs
- DeclarativeExpressionConditionDeclaration.cs