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
- DragStartedEventArgs.cs
- ActiveXHost.cs
- DataSourceGroupCollection.cs
- AvTraceFormat.cs
- ContentElement.cs
- TrimSurroundingWhitespaceAttribute.cs
- SequentialOutput.cs
- ProxyWebPartManager.cs
- Stopwatch.cs
- WithStatement.cs
- GorillaCodec.cs
- DateTimeFormatInfoScanner.cs
- DataExpression.cs
- RegistryExceptionHelper.cs
- SqlDataSourceCache.cs
- CodeAccessPermission.cs
- ColorMap.cs
- SchemaImporterExtension.cs
- SHA512CryptoServiceProvider.cs
- XmlDocumentSerializer.cs
- ParagraphResult.cs
- ReplacementText.cs
- BindingExpressionBase.cs
- CodeConditionStatement.cs
- UserNamePasswordValidator.cs
- SchemaImporter.cs
- FormViewPageEventArgs.cs
- ClientFormsAuthenticationCredentials.cs
- ApplicationSecurityManager.cs
- DataServiceKeyAttribute.cs
- DataRowView.cs
- SafeCoTaskMem.cs
- TextEffect.cs
- SafeNativeMethods.cs
- BitmapImage.cs
- HTTPRemotingHandler.cs
- CompilationUtil.cs
- SHA384Managed.cs
- ThaiBuddhistCalendar.cs
- HashAlgorithm.cs
- OpenTypeCommon.cs
- EntityDataSourceDataSelectionPanel.cs
- VideoDrawing.cs
- GeneralTransformGroup.cs
- PartialTrustVisibleAssembly.cs
- ObjectView.cs
- SR.cs
- SQLSingleStorage.cs
- TraceHandlerErrorFormatter.cs
- ExpandedWrapper.cs
- ConstructorNeedsTagAttribute.cs
- HttpHandlerAction.cs
- MouseDevice.cs
- CornerRadiusConverter.cs
- Button.cs
- TreeViewItemAutomationPeer.cs
- EncodingTable.cs
- MarkupProperty.cs
- DtcInterfaces.cs
- SafeNativeMethodsMilCoreApi.cs
- TemplateApplicationHelper.cs
- ArrayWithOffset.cs
- RootProfilePropertySettingsCollection.cs
- ActivityTypeCodeDomSerializer.cs
- CircleHotSpot.cs
- SettingsBase.cs
- PartialTrustVisibleAssembliesSection.cs
- CroppedBitmap.cs
- VerificationException.cs
- KeyInfo.cs
- LocatorPart.cs
- ApplicationManager.cs
- control.ime.cs
- loginstatus.cs
- WebPartsPersonalizationAuthorization.cs
- VisualStateGroup.cs
- EntityParameterCollection.cs
- PrivacyNoticeBindingElement.cs
- FormClosedEvent.cs
- DecoderReplacementFallback.cs
- ImageAttributes.cs
- CodeGotoStatement.cs
- HttpContext.cs
- rsa.cs
- DbConnectionClosed.cs
- MonthCalendarDesigner.cs
- TreeIterator.cs
- InputBinding.cs
- PerspectiveCamera.cs
- AutomationElementIdentifiers.cs
- FixedTextContainer.cs
- RuntimeConfigLKG.cs
- StringStorage.cs
- Line.cs
- IncrementalHitTester.cs
- WebBrowser.cs
- XPathPatternParser.cs
- DataGridViewTextBoxColumn.cs
- PersistenceMetadataNamespace.cs
- SpecularMaterial.cs