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
- GridView.cs
- DesignerProperties.cs
- StateMachineWorkflow.cs
- RawStylusInput.cs
- SqlHelper.cs
- TableCellsCollectionEditor.cs
- FacetChecker.cs
- AmbientLight.cs
- CodeNamespaceImportCollection.cs
- TextTrailingCharacterEllipsis.cs
- CacheOutputQuery.cs
- SchemaSetCompiler.cs
- UnsafeNativeMethodsCLR.cs
- Misc.cs
- AuthenticatingEventArgs.cs
- CreateUserWizardAutoFormat.cs
- TextView.cs
- EventTrigger.cs
- InkCanvasAutomationPeer.cs
- TextTreeDeleteContentUndoUnit.cs
- Assert.cs
- RowSpanVector.cs
- EditorZoneBase.cs
- ProxyWebPartManager.cs
- WindowCollection.cs
- BooleanAnimationBase.cs
- DoubleLinkListEnumerator.cs
- SpecularMaterial.cs
- SessionIDManager.cs
- DbSourceParameterCollection.cs
- InternalRelationshipCollection.cs
- base64Transforms.cs
- DefaultValueConverter.cs
- TextRangeAdaptor.cs
- ListViewItem.cs
- TextServicesCompartmentEventSink.cs
- BaseConfigurationRecord.cs
- UrlAuthorizationModule.cs
- OleDbConnection.cs
- SqlLiftWhereClauses.cs
- Matrix.cs
- UIPropertyMetadata.cs
- ParserContext.cs
- SpAudioStreamWrapper.cs
- XpsColorContext.cs
- dataSvcMapFileLoader.cs
- CodeTypeReferenceExpression.cs
- CustomErrorCollection.cs
- StringValidatorAttribute.cs
- XamlRtfConverter.cs
- TreeBuilderBamlTranslator.cs
- X509Utils.cs
- AdRotator.cs
- BasicBrowserDialog.designer.cs
- HandlerBase.cs
- FrugalMap.cs
- RangeValueProviderWrapper.cs
- Model3D.cs
- ToolStripAdornerWindowService.cs
- ping.cs
- VirtualPath.cs
- Formatter.cs
- DiagnosticTrace.cs
- MultiPartWriter.cs
- Range.cs
- ResourceProviderFactory.cs
- RefreshEventArgs.cs
- DataColumnMappingCollection.cs
- webproxy.cs
- storepermission.cs
- WebPartEditorOkVerb.cs
- Drawing.cs
- ButtonRenderer.cs
- PlatformCulture.cs
- GridViewCellAutomationPeer.cs
- KeyValueSerializer.cs
- Message.cs
- PropertyCollection.cs
- DefaultEventAttribute.cs
- StringTraceRecord.cs
- GridPatternIdentifiers.cs
- StylusShape.cs
- EntityDataSourceContainerNameConverter.cs
- DispatcherProcessingDisabled.cs
- TemplateControlCodeDomTreeGenerator.cs
- StorageAssociationSetMapping.cs
- GraphicsPath.cs
- XmlDocument.cs
- Internal.cs
- StrokeNodeOperations2.cs
- TitleStyle.cs
- SqlFunctionAttribute.cs
- PeerCredential.cs
- Int16Animation.cs
- GeometryModel3D.cs
- DbDataRecord.cs
- ELinqQueryState.cs
- ConstructorExpr.cs
- CounterCreationDataConverter.cs
- MethodRental.cs