Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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(_isCompleted); } } } 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; } lock (this) { _isCompleted = true; if (_AsyncWaitHandle != null) { _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; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // 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(_isCompleted); } } } 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; } lock (this) { _isCompleted = true; if (_AsyncWaitHandle != null) { _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; } } // 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
- CodeTypeReference.cs
- HtmlInputControl.cs
- WebDisplayNameAttribute.cs
- HandoffBehavior.cs
- SoapSchemaExporter.cs
- SoundPlayerAction.cs
- ZipIOExtraFieldPaddingElement.cs
- MultiPropertyDescriptorGridEntry.cs
- RegexCompiler.cs
- Help.cs
- VisualTreeUtils.cs
- StylusPointPropertyId.cs
- TypeExtensionConverter.cs
- XmlSchemaValidationException.cs
- GridViewUpdatedEventArgs.cs
- WindowVisualStateTracker.cs
- RenderData.cs
- UIElement.cs
- EntityDataSourceWrapperCollection.cs
- SessionStateItemCollection.cs
- MimeObjectFactory.cs
- Vector3DAnimationUsingKeyFrames.cs
- MouseGestureValueSerializer.cs
- SqlDataSourceView.cs
- Evaluator.cs
- WebPartEditorOkVerb.cs
- Button.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SemanticResultKey.cs
- LineVisual.cs
- HtmlTableRowCollection.cs
- SqlCrossApplyToCrossJoin.cs
- SqlFactory.cs
- TrackBar.cs
- FileInfo.cs
- OletxDependentTransaction.cs
- BinaryParser.cs
- DocumentGridContextMenu.cs
- AttributeInfo.cs
- OdbcConnectionFactory.cs
- HostProtectionException.cs
- SettingsProperty.cs
- SelectionItemProviderWrapper.cs
- SourceFileBuildProvider.cs
- SourceExpressionException.cs
- GeometryModel3D.cs
- XmlSchema.cs
- DesignerOptionService.cs
- HttpCookiesSection.cs
- Primitive.cs
- InstanceStoreQueryResult.cs
- CompilerTypeWithParams.cs
- BinaryFormatterSinks.cs
- Select.cs
- COM2ICategorizePropertiesHandler.cs
- InputBuffer.cs
- ContentElementCollection.cs
- WmlCommandAdapter.cs
- RawStylusInputCustomData.cs
- UnrecognizedAssertionsBindingElement.cs
- RectangleF.cs
- WindowsTitleBar.cs
- StoryFragments.cs
- Keywords.cs
- ValueTable.cs
- CuspData.cs
- TextRangeEditLists.cs
- SqlDataSourceStatusEventArgs.cs
- XmlHelper.cs
- CodeNamespaceImportCollection.cs
- AuthenticationService.cs
- GridViewPageEventArgs.cs
- DictionarySectionHandler.cs
- HttpCapabilitiesSectionHandler.cs
- ApplicationSettingsBase.cs
- AnnotationService.cs
- NullRuntimeConfig.cs
- SoapElementAttribute.cs
- Transform3D.cs
- RectConverter.cs
- FormatException.cs
- DesignerExtenders.cs
- EllipticalNodeOperations.cs
- InternalConfigHost.cs
- HttpCapabilitiesEvaluator.cs
- DefaultObjectMappingItemCollection.cs
- HtmlEmptyTagControlBuilder.cs
- ListViewItemEventArgs.cs
- TTSEngineProxy.cs
- RequestCacheEntry.cs
- AgileSafeNativeMemoryHandle.cs
- TraceListeners.cs
- HttpConfigurationSystem.cs
- Enlistment.cs
- KnownBoxes.cs
- PlacementWorkspace.cs
- ConditionalAttribute.cs
- GradientSpreadMethodValidation.cs
- ThemeDictionaryExtension.cs
- Native.cs