Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ByeMessage11.cs
- FormsAuthenticationCredentials.cs
- Knowncolors.cs
- PreviewPageInfo.cs
- XmlChildNodes.cs
- SqlMultiplexer.cs
- ToolStripDropDownItem.cs
- SolidBrush.cs
- SkewTransform.cs
- ColorContext.cs
- SqlServer2KCompatibilityCheck.cs
- UndirectedGraph.cs
- OrderByBuilder.cs
- UserCancellationException.cs
- CompiledQuery.cs
- TreeNodeCollectionEditor.cs
- FixedFlowMap.cs
- ScriptingJsonSerializationSection.cs
- DataRecordInternal.cs
- assertwrapper.cs
- HttpProcessUtility.cs
- autovalidator.cs
- Separator.cs
- ExtendLockAsyncResult.cs
- StreamSecurityUpgradeAcceptor.cs
- FormViewUpdateEventArgs.cs
- LazyTextWriterCreator.cs
- GeneralTransform2DTo3DTo2D.cs
- SpecularMaterial.cs
- WebHeaderCollection.cs
- XmlSchemaAttributeGroup.cs
- Composition.cs
- EffectiveValueEntry.cs
- InvokeGenerator.cs
- LabelLiteral.cs
- RadialGradientBrush.cs
- IsolatedStoragePermission.cs
- CacheSection.cs
- VisualTreeUtils.cs
- List.cs
- TagPrefixInfo.cs
- Group.cs
- ApplicationId.cs
- ConstantExpression.cs
- AsyncPostBackTrigger.cs
- ReflectionUtil.cs
- TimersDescriptionAttribute.cs
- URLMembershipCondition.cs
- AsyncCompletedEventArgs.cs
- UnknownExceptionActionHelper.cs
- ZipIOCentralDirectoryFileHeader.cs
- DataBinding.cs
- TypedTableBaseExtensions.cs
- SymLanguageType.cs
- PointCollection.cs
- DivideByZeroException.cs
- VirtualizingPanel.cs
- IIS7WorkerRequest.cs
- AutomationPattern.cs
- NominalTypeEliminator.cs
- SamlAuthorizationDecisionClaimResource.cs
- DataGridAutoFormat.cs
- ProjectionAnalyzer.cs
- ParentUndoUnit.cs
- MasterPageParser.cs
- SqlMethodTransformer.cs
- ThumbButtonInfo.cs
- XmlnsCache.cs
- TextTreeTextBlock.cs
- Frame.cs
- ToolStripDropDownItem.cs
- PackWebRequest.cs
- LayoutTable.cs
- OdbcConnectionStringbuilder.cs
- XPathNodeIterator.cs
- _ListenerAsyncResult.cs
- _DisconnectOverlappedAsyncResult.cs
- SystemIPv4InterfaceProperties.cs
- BufferedGraphicsContext.cs
- ComboBoxItem.cs
- CustomErrorsSectionWrapper.cs
- SoapSchemaExporter.cs
- DefaultValidator.cs
- XmlStringTable.cs
- DataAdapter.cs
- RolePrincipal.cs
- Collection.cs
- WindowsPen.cs
- MenuItem.cs
- ErrorReporting.cs
- AxWrapperGen.cs
- XmlNodeChangedEventManager.cs
- Win32.cs
- HwndSourceKeyboardInputSite.cs
- Menu.cs
- ImagingCache.cs
- HandledEventArgs.cs
- WorkflowRuntimeEndpoint.cs
- SqlDeflator.cs
- XmlSchemaAppInfo.cs