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
- DesignSurfaceEvent.cs
- XmlKeywords.cs
- ProcessStartInfo.cs
- Subset.cs
- Polyline.cs
- StatementContext.cs
- MatrixAnimationBase.cs
- DBAsyncResult.cs
- CollectionDataContract.cs
- ReliabilityContractAttribute.cs
- CompensableActivity.cs
- AsyncResult.cs
- MediaElementAutomationPeer.cs
- Triangle.cs
- CharEnumerator.cs
- Expression.cs
- ScrollChangedEventArgs.cs
- StructuredTypeInfo.cs
- StyleSheetComponentEditor.cs
- IxmlLineInfo.cs
- NegotiationTokenAuthenticator.cs
- DataGridViewHeaderCell.cs
- MissingFieldException.cs
- XpsViewerException.cs
- SweepDirectionValidation.cs
- ClientRoleProvider.cs
- NotFiniteNumberException.cs
- SoapIgnoreAttribute.cs
- DataGridViewBindingCompleteEventArgs.cs
- FixedDSBuilder.cs
- DateTimeConstantAttribute.cs
- BitmapScalingModeValidation.cs
- ListBox.cs
- QualificationDataItem.cs
- PageBuildProvider.cs
- SqlNotificationRequest.cs
- CommonDialog.cs
- SafeMarshalContext.cs
- XmlName.cs
- ImpersonationContext.cs
- CapabilitiesAssignment.cs
- SimpleType.cs
- TrackBarRenderer.cs
- DurableRuntimeValidator.cs
- XmlSerializerNamespaces.cs
- XMLDiffLoader.cs
- PropertyMetadata.cs
- PreProcessInputEventArgs.cs
- AnonymousIdentificationModule.cs
- ClientSideQueueItem.cs
- SqlPersonalizationProvider.cs
- ScriptDescriptor.cs
- Size3D.cs
- NaturalLanguageHyphenator.cs
- KnownIds.cs
- XPathSingletonIterator.cs
- QueryResultOp.cs
- MonitoringDescriptionAttribute.cs
- GraphicsState.cs
- PathStreamGeometryContext.cs
- ModelChangedEventArgsImpl.cs
- XamlToRtfParser.cs
- HwndProxyElementProvider.cs
- WindowInteropHelper.cs
- PageStatePersister.cs
- ValueHandle.cs
- LinearKeyFrames.cs
- BindingSourceDesigner.cs
- HttpRequest.cs
- CodeDelegateCreateExpression.cs
- CompilationPass2TaskInternal.cs
- ModelUIElement3D.cs
- DataPager.cs
- ArraySortHelper.cs
- StrokeCollection2.cs
- EventToken.cs
- FormViewUpdateEventArgs.cs
- XmlCountingReader.cs
- ListViewPagedDataSource.cs
- DataGridViewCellValidatingEventArgs.cs
- GridSplitter.cs
- WorkflowService.cs
- TemplatedAdorner.cs
- SerializationEventsCache.cs
- DataGridViewColumnConverter.cs
- Thumb.cs
- EventLogPermissionEntry.cs
- ImplicitInputBrush.cs
- IsolatedStoragePermission.cs
- RectConverter.cs
- StrongNameMembershipCondition.cs
- MetadataCollection.cs
- securestring.cs
- SmiRecordBuffer.cs
- CompensateDesigner.cs
- Pair.cs
- XPathMultyIterator.cs
- SurrogateEncoder.cs
- ObjectDataSourceSelectingEventArgs.cs
- ExternalException.cs