Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 2 / 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) { // _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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TriggerAction.cs
- SafeIUnknown.cs
- Win32Native.cs
- MouseEvent.cs
- SequenceNumber.cs
- TraceUtils.cs
- EntitySetBase.cs
- DocumentationServerProtocol.cs
- SoundPlayerAction.cs
- InertiaExpansionBehavior.cs
- MergeFilterQuery.cs
- HttpCookieCollection.cs
- LocationUpdates.cs
- followingquery.cs
- CookielessHelper.cs
- SecurityResources.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- ClusterSafeNativeMethods.cs
- BamlReader.cs
- LiteralControl.cs
- ExcludeFromCodeCoverageAttribute.cs
- AmbientProperties.cs
- Effect.cs
- XsdDateTime.cs
- WindowHideOrCloseTracker.cs
- CalendarDay.cs
- ListParaClient.cs
- FilterableAttribute.cs
- ReflectionPermission.cs
- GridViewColumnCollectionChangedEventArgs.cs
- Vector3DCollection.cs
- ResourceKey.cs
- ZipIOExtraFieldElement.cs
- SourceChangedEventArgs.cs
- CompilerErrorCollection.cs
- DigitalSignatureProvider.cs
- ViewService.cs
- ItemsPresenter.cs
- SelectionRangeConverter.cs
- IntSecurity.cs
- VideoDrawing.cs
- XmlILStorageConverter.cs
- XsltSettings.cs
- EdmToObjectNamespaceMap.cs
- Visual3DCollection.cs
- OleDbConnectionFactory.cs
- XmlAnyElementAttribute.cs
- RTLAwareMessageBox.cs
- ConsumerConnectionPoint.cs
- DataGridColumnHeaderCollection.cs
- RadioButton.cs
- PropertyKey.cs
- IfAction.cs
- EventData.cs
- BinaryVersion.cs
- MinimizableAttributeTypeConverter.cs
- StrongNameKeyPair.cs
- EventManager.cs
- ExportOptions.cs
- PolicyValidationException.cs
- FormDocumentDesigner.cs
- CopyEncoder.cs
- TransformedBitmap.cs
- NativeMethods.cs
- AQNBuilder.cs
- HttpHandlersSection.cs
- ProfileGroupSettings.cs
- Point.cs
- Activator.cs
- RayMeshGeometry3DHitTestResult.cs
- WasHttpModulesInstallComponent.cs
- PagerSettings.cs
- FileDialogCustomPlace.cs
- XamlToRtfWriter.cs
- LongAverageAggregationOperator.cs
- ListViewHitTestInfo.cs
- OutputCacheSection.cs
- HwndSourceParameters.cs
- ConstraintCollection.cs
- BulletedListEventArgs.cs
- SmtpTransport.cs
- TriggerAction.cs
- Graph.cs
- SeekableReadStream.cs
- SHA512Managed.cs
- NetTcpBindingElement.cs
- CorruptingExceptionCommon.cs
- BamlLocalizableResourceKey.cs
- InputElement.cs
- RemotingConfigParser.cs
- FormsAuthenticationUser.cs
- ObjectNavigationPropertyMapping.cs
- recordstatescratchpad.cs
- WorkflowHostingEndpoint.cs
- UIElementIsland.cs
- AttachedAnnotation.cs
- OracleCommandSet.cs
- BitmapFrameDecode.cs
- FilteredXmlReader.cs
- StreamResourceInfo.cs