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
- XmlLanguage.cs
- CommandPlan.cs
- SchemaMapping.cs
- SqlRowUpdatedEvent.cs
- TextElementEditingBehaviorAttribute.cs
- PathSegmentCollection.cs
- PasswordRecoveryAutoFormat.cs
- DateTimeOffsetStorage.cs
- TriggerActionCollection.cs
- GetPageNumberCompletedEventArgs.cs
- TextTreeInsertElementUndoUnit.cs
- userdatakeys.cs
- TimerElapsedEvenArgs.cs
- TextControlDesigner.cs
- StatusCommandUI.cs
- ApplicationManager.cs
- SafeNativeMethods.cs
- ConstantSlot.cs
- XmlUnspecifiedAttribute.cs
- ExpressionBuilder.cs
- GridItemPatternIdentifiers.cs
- SubpageParaClient.cs
- DateTimeSerializationSection.cs
- HttpCookieCollection.cs
- BinaryKeyIdentifierClause.cs
- ArgumentValueSerializer.cs
- EventHandlersStore.cs
- Int16AnimationUsingKeyFrames.cs
- ItemContainerGenerator.cs
- AssociatedControlConverter.cs
- TabItem.cs
- CheckoutException.cs
- RouteUrlExpressionBuilder.cs
- COAUTHINFO.cs
- RoutedCommand.cs
- Menu.cs
- GridViewAutoFormat.cs
- IdentityHolder.cs
- DocumentReference.cs
- ISessionStateStore.cs
- SchemaTypeEmitter.cs
- Vector3DIndependentAnimationStorage.cs
- ControlBuilderAttribute.cs
- ItemContainerGenerator.cs
- ObjectStateManager.cs
- DetailsViewPageEventArgs.cs
- MsmqTransportElement.cs
- BooleanFunctions.cs
- ErrorRuntimeConfig.cs
- TypeBuilderInstantiation.cs
- FixedSOMElement.cs
- AsymmetricAlgorithm.cs
- DataServiceProviderWrapper.cs
- MetadataItem.cs
- coordinator.cs
- CircleEase.cs
- GridLengthConverter.cs
- RectAnimationBase.cs
- Decorator.cs
- InvariantComparer.cs
- CacheAxisQuery.cs
- WindowsPrincipal.cs
- ExecutionContext.cs
- HttpRequestTraceRecord.cs
- PrintDialog.cs
- SponsorHelper.cs
- KeyboardDevice.cs
- TypeReference.cs
- IIS7UserPrincipal.cs
- MonthChangedEventArgs.cs
- XmlSerializerNamespaces.cs
- DefinitionUpdate.cs
- DbConnectionClosed.cs
- ExpressionBuilderCollection.cs
- ElementHostPropertyMap.cs
- Stroke.cs
- PageTheme.cs
- DetailsViewActionList.cs
- SystemWebExtensionsSectionGroup.cs
- ByteAnimationUsingKeyFrames.cs
- DeferrableContent.cs
- RegexReplacement.cs
- BindUriHelper.cs
- UnsafeNativeMethodsCLR.cs
- DeviceContext2.cs
- TransformerTypeCollection.cs
- HtmlInputImage.cs
- ObjectIDGenerator.cs
- EffectiveValueEntry.cs
- PageCatalogPart.cs
- QuaternionRotation3D.cs
- _LocalDataStore.cs
- WebColorConverter.cs
- Column.cs
- DtdParser.cs
- OdbcDataAdapter.cs
- DefaultAutoFieldGenerator.cs
- HtmlPhoneCallAdapter.cs
- SqlParameterizer.cs
- EntryWrittenEventArgs.cs