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
- ImageButton.cs
- ObjectStateFormatter.cs
- EnumBuilder.cs
- TagPrefixCollection.cs
- EarlyBoundInfo.cs
- CredentialCache.cs
- ListViewItemSelectionChangedEvent.cs
- Directory.cs
- NamespaceCollection.cs
- WebPartConnectionCollection.cs
- StrokeRenderer.cs
- MaskedTextBoxTextEditor.cs
- Vector3DConverter.cs
- FixedPageAutomationPeer.cs
- BitmapMetadataBlob.cs
- ByteStreamMessageEncodingElement.cs
- CircleHotSpot.cs
- EventHandlers.cs
- sqlcontext.cs
- RequiredFieldValidator.cs
- WebEvents.cs
- ObfuscateAssemblyAttribute.cs
- TextFindEngine.cs
- ScrollChangedEventArgs.cs
- StdValidatorsAndConverters.cs
- ObjectStorage.cs
- LinearGradientBrush.cs
- HostingEnvironmentException.cs
- BitmapSource.cs
- IssuedTokenParametersElement.cs
- EditorBrowsableAttribute.cs
- ProfileModule.cs
- CursorConverter.cs
- StylusCaptureWithinProperty.cs
- DbSourceParameterCollection.cs
- TrackingMemoryStreamFactory.cs
- FrameDimension.cs
- DataGridColumnHeaderAutomationPeer.cs
- CultureSpecificCharacterBufferRange.cs
- ClientBuildManagerCallback.cs
- AppPool.cs
- OleDbDataReader.cs
- RenderingEventArgs.cs
- DataTableReader.cs
- BindingBase.cs
- Wizard.cs
- PageRanges.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- FontCollection.cs
- ConstraintStruct.cs
- KeyedHashAlgorithm.cs
- PrivateFontCollection.cs
- FrameworkContextData.cs
- ECDsaCng.cs
- SQLRoleProvider.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- SwitchAttribute.cs
- UnaryQueryOperator.cs
- MenuCommandService.cs
- TheQuery.cs
- ActivityCodeDomSerializer.cs
- ChooseAction.cs
- SerializeAbsoluteContext.cs
- XsltSettings.cs
- TcpSocketManager.cs
- BitmapPalette.cs
- XmlSerializerFactory.cs
- WebCodeGenerator.cs
- GACMembershipCondition.cs
- XamlVector3DCollectionSerializer.cs
- DataBindingList.cs
- SecurityHelper.cs
- ZoneMembershipCondition.cs
- HttpProfileBase.cs
- _HeaderInfoTable.cs
- DrawingDrawingContext.cs
- CodeDomLocalizationProvider.cs
- LineMetrics.cs
- AudioFormatConverter.cs
- PassportPrincipal.cs
- ImageIndexEditor.cs
- HostingEnvironmentSection.cs
- PagerStyle.cs
- TextBounds.cs
- TitleStyle.cs
- ConfigViewGenerator.cs
- TrustSection.cs
- AssemblyBuilder.cs
- ValueTable.cs
- GlyphRun.cs
- DrawingContext.cs
- Screen.cs
- UInt16Storage.cs
- ButtonFieldBase.cs
- SqlWorkflowInstanceStoreLock.cs
- TdsParserStateObject.cs
- WinEventWrap.cs
- AssociationTypeEmitter.cs
- CFStream.cs
- AssemblyName.cs