Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- MenuItemBinding.cs
- TextTreeFixupNode.cs
- WriterOutput.cs
- BaseHashHelper.cs
- PropertyTabAttribute.cs
- HwndKeyboardInputProvider.cs
- EraserBehavior.cs
- SyntaxCheck.cs
- StoryFragments.cs
- XpsPackagingException.cs
- KeyValuePair.cs
- XmlElementCollection.cs
- DataGridPagerStyle.cs
- ConstrainedDataObject.cs
- PasswordTextNavigator.cs
- DbUpdateCommandTree.cs
- CommandValueSerializer.cs
- BasicViewGenerator.cs
- OptimalTextSource.cs
- IPeerNeighbor.cs
- SqlDesignerDataSourceView.cs
- configsystem.cs
- wgx_render.cs
- FormViewPageEventArgs.cs
- Expression.DebuggerProxy.cs
- NativeMethods.cs
- DefaultPropertyAttribute.cs
- RSAProtectedConfigurationProvider.cs
- TypeUtil.cs
- UpdatePanelTrigger.cs
- HtmlTableCellCollection.cs
- XmlIlTypeHelper.cs
- ContractBase.cs
- SQLString.cs
- SchemaCreator.cs
- PackagePart.cs
- SimplePropertyEntry.cs
- ExpressionsCollectionEditor.cs
- HwndSource.cs
- QueryCacheManager.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- BulletedListEventArgs.cs
- CustomError.cs
- GcSettings.cs
- Knowncolors.cs
- DataBindingList.cs
- TextDecorationCollectionConverter.cs
- EntityDataSourceContextCreatingEventArgs.cs
- DoubleLink.cs
- StsCommunicationException.cs
- FileDialogCustomPlace.cs
- FocusTracker.cs
- SchemaLookupTable.cs
- CssClassPropertyAttribute.cs
- EncoderNLS.cs
- XpsFilter.cs
- GenericWebPart.cs
- SQLInt16.cs
- rsa.cs
- BufferedGraphics.cs
- DBConnectionString.cs
- Effect.cs
- BinHexDecoder.cs
- WorkflowPageSetupDialog.cs
- QualifiedCellIdBoolean.cs
- LambdaCompiler.Statements.cs
- Object.cs
- JpegBitmapEncoder.cs
- MultiTargetingUtil.cs
- SettingsPropertyWrongTypeException.cs
- DataControlFieldCollection.cs
- ApplyTemplatesAction.cs
- ContentType.cs
- EdmMember.cs
- SmuggledIUnknown.cs
- FixedLineResult.cs
- ConfigXmlText.cs
- EventPrivateKey.cs
- WorkflowInstanceExtensionCollection.cs
- _SslStream.cs
- SqlInfoMessageEvent.cs
- NavigationWindowAutomationPeer.cs
- StylusEditingBehavior.cs
- MimeWriter.cs
- BindingElementExtensionElement.cs
- Debugger.cs
- XmlValidatingReader.cs
- WebHttpSecurityElement.cs
- DesignerEditorPartChrome.cs
- PlacementWorkspace.cs
- AliasedExpr.cs
- Visual3DCollection.cs
- DateTimeConstantAttribute.cs
- WarningException.cs
- TypeHelpers.cs
- DispatcherHookEventArgs.cs
- ListViewItem.cs
- ConstructorBuilder.cs
- ExpressionConverter.cs
- UnaryNode.cs