Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1305376 / 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 { [System.Security.SecurityCritical] // auto-generated 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; } [System.Security.SecurityCritical] // auto-generated_required 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; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [System.Security.SecurityCritical] // auto-generated_required 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SystemIcmpV4Statistics.cs
- IRCollection.cs
- IODescriptionAttribute.cs
- FormViewPagerRow.cs
- CodeRegionDirective.cs
- DocumentViewerConstants.cs
- FindCompletedEventArgs.cs
- ExpressionCopier.cs
- BindingNavigator.cs
- WebAdminConfigurationHelper.cs
- DataGridViewImageCell.cs
- LineGeometry.cs
- CodeCatchClauseCollection.cs
- DesignerVerbToolStripMenuItem.cs
- SizeConverter.cs
- DbConnectionStringCommon.cs
- WindowsRichEditRange.cs
- AttachedProperty.cs
- WSUtilitySpecificationVersion.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- ElementUtil.cs
- ProjectionCamera.cs
- ThreadStateException.cs
- WsatServiceCertificate.cs
- Image.cs
- XmlUrlResolver.cs
- IPipelineRuntime.cs
- AssemblyBuilderData.cs
- ColumnTypeConverter.cs
- InertiaRotationBehavior.cs
- QueryResult.cs
- RegionInfo.cs
- UserUseLicenseDictionaryLoader.cs
- ScriptingJsonSerializationSection.cs
- HttpRuntimeSection.cs
- ColorKeyFrameCollection.cs
- SemanticTag.cs
- ThicknessKeyFrameCollection.cs
- ControlParameter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- HwndMouseInputProvider.cs
- ApplicationSecurityManager.cs
- InkCanvasInnerCanvas.cs
- DiffuseMaterial.cs
- CodeDOMProvider.cs
- NamedPipeTransportBindingElement.cs
- ExpandSegment.cs
- Number.cs
- FixedSOMFixedBlock.cs
- SharedUtils.cs
- FixedElement.cs
- PrinterUnitConvert.cs
- XsdBuildProvider.cs
- DeviceSpecificDesigner.cs
- _UriTypeConverter.cs
- WebRequestModuleElementCollection.cs
- RectangleHotSpot.cs
- GacUtil.cs
- PackageRelationshipSelector.cs
- ConstantSlot.cs
- EncryptedKeyIdentifierClause.cs
- MenuItemBindingCollection.cs
- PageTrueTypeFont.cs
- ZoomPercentageConverter.cs
- JsonByteArrayDataContract.cs
- Internal.cs
- XmlQualifiedName.cs
- webbrowsersite.cs
- SchemaElementLookUpTableEnumerator.cs
- OutputCacheSettings.cs
- Propagator.Evaluator.cs
- DependencySource.cs
- ActivityDesignerHelper.cs
- ObjectCloneHelper.cs
- ContentPathSegment.cs
- CategoryAttribute.cs
- HealthMonitoringSectionHelper.cs
- XPathNavigatorReader.cs
- JoinElimination.cs
- EllipseGeometry.cs
- SystemKeyConverter.cs
- EntityStoreSchemaGenerator.cs
- PropertyCondition.cs
- XmlSchemaAttribute.cs
- StyleBamlTreeBuilder.cs
- RSAOAEPKeyExchangeFormatter.cs
- _NtlmClient.cs
- ApplicationException.cs
- BamlRecords.cs
- XamlUtilities.cs
- JsonMessageEncoderFactory.cs
- SerializationInfo.cs
- OuterGlowBitmapEffect.cs
- BaseProcessor.cs
- Soap.cs
- DataListItem.cs
- __TransparentProxy.cs
- typedescriptorpermission.cs
- GridViewCancelEditEventArgs.cs
- LinqDataSourceStatusEventArgs.cs