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
- FlowLayout.cs
- DataControlFieldCollection.cs
- StorageEntityContainerMapping.cs
- FileDetails.cs
- LockedAssemblyCache.cs
- TranslateTransform3D.cs
- PageWrapper.cs
- BaseParser.cs
- DataColumnCollection.cs
- basevalidator.cs
- XmlSignificantWhitespace.cs
- CodeBinaryOperatorExpression.cs
- OperandQuery.cs
- SessionPageStatePersister.cs
- FromRequest.cs
- DisableDpiAwarenessAttribute.cs
- AdjustableArrowCap.cs
- HttpHeaderCollection.cs
- DivideByZeroException.cs
- StorageFunctionMapping.cs
- SapiRecoContext.cs
- CodeCatchClauseCollection.cs
- ServiceChannel.cs
- HelpProvider.cs
- LinkedList.cs
- AppDomainAttributes.cs
- dataSvcMapFileLoader.cs
- ServiceDocument.cs
- Int32RectConverter.cs
- Vector3DCollectionValueSerializer.cs
- XmlUtf8RawTextWriter.cs
- Animatable.cs
- ApplicationHost.cs
- EpmAttributeNameBuilder.cs
- CellTreeNode.cs
- WmlCalendarAdapter.cs
- _Events.cs
- DesignerHost.cs
- WorkflowInstanceProvider.cs
- EntityViewGenerator.cs
- DataGridViewImageCell.cs
- TypeLibraryHelper.cs
- DATA_BLOB.cs
- ComponentEditorForm.cs
- RemoteWebConfigurationHostStream.cs
- CustomErrorCollection.cs
- InkPresenter.cs
- AppliedDeviceFiltersDialog.cs
- ListControl.cs
- RelatedCurrencyManager.cs
- KeyValueConfigurationElement.cs
- ClientProxyGenerator.cs
- FormViewPagerRow.cs
- PointHitTestResult.cs
- EpmCustomContentSerializer.cs
- TrustLevelCollection.cs
- XmlValueConverter.cs
- TextModifierScope.cs
- SystemFonts.cs
- ScriptHandlerFactory.cs
- SamlDelegatingWriter.cs
- SettingsSavedEventArgs.cs
- ContextMenuStrip.cs
- PropertyMap.cs
- SRGSCompiler.cs
- ItemMap.cs
- WebPartDesigner.cs
- EventArgs.cs
- TypeLibConverter.cs
- TextElement.cs
- UnsettableComboBox.cs
- AspCompat.cs
- MasterPageBuildProvider.cs
- PersistenceTypeAttribute.cs
- DataGridViewRowPostPaintEventArgs.cs
- CopyAttributesAction.cs
- CryptoKeySecurity.cs
- HintTextMaxWidthConverter.cs
- SqlParameterCollection.cs
- FormViewCommandEventArgs.cs
- FormattedTextSymbols.cs
- ClusterRegistryConfigurationProvider.cs
- EditorAttribute.cs
- _TLSstream.cs
- AutoResizedEvent.cs
- CookieParameter.cs
- SHA256.cs
- ConfigurationSectionGroupCollection.cs
- WebSysDisplayNameAttribute.cs
- PagesSection.cs
- WinEventQueueItem.cs
- StringBuilder.cs
- Completion.cs
- XmlSchemaAttributeGroupRef.cs
- CaseCqlBlock.cs
- ImageCollectionEditor.cs
- URIFormatException.cs
- NameValueConfigurationCollection.cs
- KeySpline.cs
- ToolStripStatusLabel.cs