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
- DeviceSpecificDesigner.cs
- DependencyPropertyChangedEventArgs.cs
- GuidConverter.cs
- EntityContainerAssociationSetEnd.cs
- TextTreeExtractElementUndoUnit.cs
- TypeResolvingOptions.cs
- MaskedTextBoxDesigner.cs
- Rect3DValueSerializer.cs
- QilInvokeEarlyBound.cs
- XmlChildNodes.cs
- IssuedTokenServiceCredential.cs
- SqlProcedureAttribute.cs
- WebPartHelpVerb.cs
- FontWeight.cs
- TypeExtension.cs
- XmlByteStreamWriter.cs
- ApplicationInterop.cs
- DatagridviewDisplayedBandsData.cs
- ErrorWrapper.cs
- ParserContext.cs
- Command.cs
- CompareInfo.cs
- EventSinkActivityDesigner.cs
- ArrayEditor.cs
- TextTreeTextBlock.cs
- DirectoryNotFoundException.cs
- MimeMultiPart.cs
- MailMessageEventArgs.cs
- XsltException.cs
- EpmHelper.cs
- ReferencedCollectionType.cs
- RectValueSerializer.cs
- UInt16Storage.cs
- ZoneLinkButton.cs
- Token.cs
- AuthorizationSection.cs
- ZipIOExtraFieldZip64Element.cs
- CodePageEncoding.cs
- Int32CollectionConverter.cs
- FacetEnabledSchemaElement.cs
- GenerateScriptTypeAttribute.cs
- XmlSchemaComplexContentRestriction.cs
- DataGridTable.cs
- M3DUtil.cs
- BaseResourcesBuildProvider.cs
- sqlpipe.cs
- ClientProxyGenerator.cs
- ColumnBinding.cs
- CharAnimationUsingKeyFrames.cs
- MasterPageBuildProvider.cs
- NullRuntimeConfig.cs
- Unit.cs
- EditorPartCollection.cs
- RequestResizeEvent.cs
- Single.cs
- SqlTrackingQuery.cs
- BitmapCodecInfo.cs
- StreamGeometry.cs
- ScriptingRoleServiceSection.cs
- CodeIdentifiers.cs
- BamlVersionHeader.cs
- CommandEventArgs.cs
- JsonStringDataContract.cs
- MemberPathMap.cs
- ViewBox.cs
- ScrollChrome.cs
- Random.cs
- RoutedEventHandlerInfo.cs
- LocatorManager.cs
- IList.cs
- AttributeSetAction.cs
- PostBackTrigger.cs
- HttpProfileBase.cs
- CodeStatementCollection.cs
- CompiledIdentityConstraint.cs
- NativeCompoundFileAPIs.cs
- OleDbPermission.cs
- ImageInfo.cs
- UserControl.cs
- SqlBuffer.cs
- StylusShape.cs
- TypeConverterAttribute.cs
- HtmlGenericControl.cs
- DES.cs
- AdRotatorDesigner.cs
- ActivityExecutorSurrogate.cs
- ButtonBaseAdapter.cs
- WebPartMinimizeVerb.cs
- SystemIPGlobalStatistics.cs
- Perspective.cs
- SoundPlayer.cs
- SynchronizationValidator.cs
- PackageStore.cs
- Bidi.cs
- StrokeNodeData.cs
- xdrvalidator.cs
- UnionCodeGroup.cs
- ImageButton.cs
- DataGridViewTextBoxEditingControl.cs
- Convert.cs