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
- versioninfo.cs
- ClientSettings.cs
- TypeReference.cs
- _PooledStream.cs
- Dynamic.cs
- TableLayoutStyleCollection.cs
- ThicknessAnimationBase.cs
- Parser.cs
- MimeMultiPart.cs
- TextElementEditingBehaviorAttribute.cs
- PropertyBuilder.cs
- OleDbMetaDataFactory.cs
- PaperSource.cs
- GenericParameterDataContract.cs
- TextEditor.cs
- DataSvcMapFileSerializer.cs
- TextRangeEditTables.cs
- Schema.cs
- BCLDebug.cs
- ColumnHeaderConverter.cs
- WindowsAltTab.cs
- Deflater.cs
- DbLambda.cs
- DiscardableAttribute.cs
- ListSourceHelper.cs
- PropertyRef.cs
- RegexCompiler.cs
- ProxyWebPart.cs
- recordstate.cs
- DescendentsWalker.cs
- PassportPrincipal.cs
- WindowVisualStateTracker.cs
- RelationshipConverter.cs
- ProtocolsConfigurationHandler.cs
- PropertyPathWorker.cs
- FormsAuthenticationUser.cs
- NativeMethods.cs
- DataGridViewButtonCell.cs
- UInt32.cs
- WebCategoryAttribute.cs
- TogglePattern.cs
- _BaseOverlappedAsyncResult.cs
- BinaryEditor.cs
- Adorner.cs
- DocumentPaginator.cs
- HGlobalSafeHandle.cs
- DataGridViewSortCompareEventArgs.cs
- GridItemCollection.cs
- ToolBarDesigner.cs
- XmlDocumentSerializer.cs
- LocalValueEnumerator.cs
- GCHandleCookieTable.cs
- Pair.cs
- DefaultTraceListener.cs
- DataRecord.cs
- SecurityKeyUsage.cs
- DesignConnectionCollection.cs
- Properties.cs
- DataGridRow.cs
- ImpersonateTokenRef.cs
- TdsParserHelperClasses.cs
- Application.cs
- SaveFileDialog.cs
- DocumentPropertiesDialog.cs
- UrlMappingsSection.cs
- ProvidersHelper.cs
- HtmlElementCollection.cs
- ListItemCollection.cs
- CapabilitiesRule.cs
- ResourceWriter.cs
- WindowsToolbar.cs
- ProfilePropertyNameValidator.cs
- CodeExporter.cs
- recordstatescratchpad.cs
- AsyncOperationContext.cs
- TableDetailsRow.cs
- EncryptedPackage.cs
- CuspData.cs
- TargetControlTypeAttribute.cs
- RegexWorker.cs
- EventLogPropertySelector.cs
- EmbeddedMailObject.cs
- EventDescriptorCollection.cs
- CellNormalizer.cs
- ServiceObjectContainer.cs
- EntityCommand.cs
- Bits.cs
- RemoteCryptoRsaServiceProvider.cs
- datacache.cs
- Timer.cs
- PowerModeChangedEventArgs.cs
- XhtmlBasicPhoneCallAdapter.cs
- HttpRequestTraceRecord.cs
- CompilerError.cs
- CaseInsensitiveOrdinalStringComparer.cs
- TdsParserSafeHandles.cs
- ColumnProvider.cs
- TypeSemantics.cs
- CTreeGenerator.cs
- BaseHashHelper.cs