Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- PackWebResponse.cs
- ContextMenu.cs
- StdValidatorsAndConverters.cs
- ConfigurationElement.cs
- FlowchartDesigner.xaml.cs
- XmlDataDocument.cs
- XmlILOptimizerVisitor.cs
- Processor.cs
- XmlSortKey.cs
- HttpProtocolReflector.cs
- LineBreak.cs
- IsolatedStorageFile.cs
- WindowPatternIdentifiers.cs
- ExtendedProperty.cs
- securitycriticaldataformultiplegetandset.cs
- Comparer.cs
- DelegateBodyWriter.cs
- FilteredDataSetHelper.cs
- CfgSemanticTag.cs
- RelatedView.cs
- TextEncodedRawTextWriter.cs
- TheQuery.cs
- CodePropertyReferenceExpression.cs
- PatternMatcher.cs
- UpdateCommand.cs
- FormView.cs
- DefaultPropertyAttribute.cs
- DataGridViewImageColumn.cs
- TransportContext.cs
- CollectionViewProxy.cs
- AutomationInteropProvider.cs
- AsyncOperationContext.cs
- PublisherIdentityPermission.cs
- BufferCache.cs
- GridView.cs
- DriveNotFoundException.cs
- MobileTextWriter.cs
- DeflateStreamAsyncResult.cs
- XmlUrlEditor.cs
- ListViewPagedDataSource.cs
- ServiceBusyException.cs
- SqlServer2KCompatibilityAnnotation.cs
- StyleXamlParser.cs
- SafeIUnknown.cs
- ToolboxComponentsCreatingEventArgs.cs
- SqlStatistics.cs
- BrowserCapabilitiesFactory.cs
- DataServiceKeyAttribute.cs
- Header.cs
- DbCommandTree.cs
- DrawingBrush.cs
- CollectionEditorDialog.cs
- DBProviderConfigurationHandler.cs
- DataGridViewToolTip.cs
- WebBrowser.cs
- FloaterParagraph.cs
- OleDbPropertySetGuid.cs
- ProxyWebPart.cs
- DataGridViewComboBoxColumn.cs
- X509CertificateClaimSet.cs
- BoundField.cs
- SoapReflectionImporter.cs
- JobStaple.cs
- DataGridViewAdvancedBorderStyle.cs
- GridViewAutomationPeer.cs
- DependentList.cs
- StateRuntime.cs
- ReceiveReply.cs
- _ListenerRequestStream.cs
- querybuilder.cs
- RepeaterCommandEventArgs.cs
- ListViewInsertedEventArgs.cs
- WebEncodingValidator.cs
- NodeFunctions.cs
- CngProperty.cs
- WebPartDescriptionCollection.cs
- ParameterToken.cs
- DrawingDrawingContext.cs
- _SslStream.cs
- OutputCacheModule.cs
- TextSchema.cs
- NTAccount.cs
- UnsafeNativeMethods.cs
- StructuralCache.cs
- ObjectQuery_EntitySqlExtensions.cs
- ProcessHostConfigUtils.cs
- CodeSnippetCompileUnit.cs
- CollectionBuilder.cs
- StateManagedCollection.cs
- isolationinterop.cs
- SeparatorAutomationPeer.cs
- TrackingProfile.cs
- VirtualPathProvider.cs
- Polygon.cs
- IndicCharClassifier.cs
- XamlInt32CollectionSerializer.cs
- Pair.cs
- SmiTypedGetterSetter.cs
- HierarchicalDataTemplate.cs
- StreamWriter.cs