Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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(false); } } } 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; } _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; } [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; } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- documentsequencetextcontainer.cs
- AstNode.cs
- Size3DConverter.cs
- Metadata.cs
- ApplicationGesture.cs
- WebBrowserHelper.cs
- CodeObject.cs
- ValidationSummary.cs
- InvalidDataContractException.cs
- BaseValidator.cs
- PasswordRecovery.cs
- ObjectStorage.cs
- RegexBoyerMoore.cs
- RectangleConverter.cs
- ClipboardData.cs
- SchemaCollectionPreprocessor.cs
- PropertyGrid.cs
- RightsManagementErrorHandler.cs
- StructuredTypeEmitter.cs
- ServiceOperation.cs
- X509Utils.cs
- TableLayoutColumnStyleCollection.cs
- JsonUriDataContract.cs
- SamlAuthenticationStatement.cs
- HttpStreamFormatter.cs
- ToolTip.cs
- RadioButtonList.cs
- DataTableExtensions.cs
- BaseTreeIterator.cs
- EntityDataSourceValidationException.cs
- GridViewColumnCollection.cs
- SqlProviderServices.cs
- MemberInfoSerializationHolder.cs
- ToolStripDropTargetManager.cs
- CollectionConverter.cs
- XmlSchemaDatatype.cs
- XmlSchemaFacet.cs
- XmlSignificantWhitespace.cs
- CodeAccessPermission.cs
- regiisutil.cs
- VisualTreeUtils.cs
- SafeLibraryHandle.cs
- Debug.cs
- FreeIndexList.cs
- RefreshPropertiesAttribute.cs
- QueryResponse.cs
- BaseProcessor.cs
- ConditionalDesigner.cs
- Point3DConverter.cs
- SchemaElementLookUpTable.cs
- _NestedMultipleAsyncResult.cs
- HtmlTitle.cs
- WebConfigurationFileMap.cs
- UrlMappingsSection.cs
- AsymmetricKeyExchangeFormatter.cs
- ColumnPropertiesGroup.cs
- ExpressionCopier.cs
- ImageSource.cs
- Walker.cs
- Storyboard.cs
- ListViewInsertionMark.cs
- MenuStrip.cs
- ToolStripHighContrastRenderer.cs
- RoutedCommand.cs
- WorkflowTraceTransfer.cs
- BamlTreeNode.cs
- smtppermission.cs
- OpenFileDialog.cs
- DataGridViewCellFormattingEventArgs.cs
- BitmapCodecInfoInternal.cs
- AncestorChangedEventArgs.cs
- SHA1CryptoServiceProvider.cs
- TransformerInfo.cs
- TextLine.cs
- ConfigXmlAttribute.cs
- Quaternion.cs
- IconBitmapDecoder.cs
- GridViewDeleteEventArgs.cs
- StringCollectionMarkupSerializer.cs
- XmlExtensionFunction.cs
- PersonalizationState.cs
- OdbcError.cs
- PersonalizationStateQuery.cs
- RemotingAttributes.cs
- ButtonFlatAdapter.cs
- XNodeSchemaApplier.cs
- Vector3dCollection.cs
- FrameworkElementFactoryMarkupObject.cs
- DodSequenceMerge.cs
- ActivityWithResultConverter.cs
- XslTransform.cs
- HtmlDocument.cs
- UiaCoreProviderApi.cs
- Content.cs
- MultiSelectRootGridEntry.cs
- NodeFunctions.cs
- CardSpacePolicyElement.cs
- WebRequestModuleElementCollection.cs
- ServiceObjectContainer.cs
- DesignerHelpers.cs