Code:
/ FX-1434 / FX-1434 / 1.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
- PlatformCulture.cs
- ConnectorDragDropGlyph.cs
- Signature.cs
- DbConnectionClosed.cs
- CounterSample.cs
- FrameworkTemplate.cs
- shaperfactory.cs
- QueryCacheKey.cs
- TextChange.cs
- SwitchAttribute.cs
- DocComment.cs
- XamlSerializer.cs
- ShapingWorkspace.cs
- ScrollProperties.cs
- BooleanSwitch.cs
- ByteStack.cs
- UInt64.cs
- MultiBinding.cs
- WorkflowControlClient.cs
- EncryptedXml.cs
- ExpressionBuilder.cs
- SchemaImporter.cs
- ContentOperations.cs
- TimeoutValidationAttribute.cs
- And.cs
- TypeElement.cs
- KeyValueInternalCollection.cs
- RepeatButtonAutomationPeer.cs
- NativeMethods.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- XmlSignificantWhitespace.cs
- ScriptReferenceEventArgs.cs
- NativeMethods.cs
- ProgressBar.cs
- EntityDataSourceColumn.cs
- FixedTextView.cs
- RectIndependentAnimationStorage.cs
- TransformConverter.cs
- Menu.cs
- ConnectionInterfaceCollection.cs
- XomlCompilerError.cs
- SelectedPathEditor.cs
- IdentifierService.cs
- Geometry.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- MarshalByValueComponent.cs
- DrawTreeNodeEventArgs.cs
- recordstate.cs
- OutputCacheProviderCollection.cs
- ProgressChangedEventArgs.cs
- EntityDataSource.cs
- InvalidPropValue.cs
- FrameworkElementFactoryMarkupObject.cs
- Interfaces.cs
- Win32.cs
- PointConverter.cs
- Camera.cs
- ThicknessAnimationUsingKeyFrames.cs
- SeekableMessageNavigator.cs
- MenuAutoFormat.cs
- XPathNodeIterator.cs
- _DisconnectOverlappedAsyncResult.cs
- BaseCodeDomTreeGenerator.cs
- StringResourceManager.cs
- ConfigXmlReader.cs
- SortedList.cs
- xmlglyphRunInfo.cs
- MoveSizeWinEventHandler.cs
- HtmlShimManager.cs
- TranslateTransform3D.cs
- ActiveXContainer.cs
- WebConfigurationHost.cs
- NetworkStream.cs
- XmlIncludeAttribute.cs
- RowType.cs
- SerializationHelper.cs
- PropertyChangedEventArgs.cs
- NonPrimarySelectionGlyph.cs
- SmiMetaData.cs
- ExtensionsSection.cs
- LinqDataSourceEditData.cs
- Automation.cs
- XmlRawWriterWrapper.cs
- MetadataHelper.cs
- SurrogateEncoder.cs
- DispatcherExceptionFilterEventArgs.cs
- PrintPreviewGraphics.cs
- ResourceWriter.cs
- UriWriter.cs
- TimeSpanSecondsConverter.cs
- KeyInterop.cs
- CTreeGenerator.cs
- CreateUserWizardStep.cs
- WorkflowServiceAttributes.cs
- UseLicense.cs
- OdbcConnectionFactory.cs
- RectConverter.cs
- DataTablePropertyDescriptor.cs
- FormatSettings.cs