Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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(false); } } } 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; } _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; } [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; } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LocalizableAttribute.cs
- ApplicationActivator.cs
- SQLMoneyStorage.cs
- LinqToSqlWrapper.cs
- HttpModuleAction.cs
- ValidationRuleCollection.cs
- Classification.cs
- Vector3DCollection.cs
- NameNode.cs
- EntityContainerAssociationSet.cs
- GeometryGroup.cs
- ScrollEventArgs.cs
- PersistenceTypeAttribute.cs
- Mouse.cs
- UxThemeWrapper.cs
- OleDbConnection.cs
- ConfigXmlText.cs
- ResourceReferenceKeyNotFoundException.cs
- XmlBinaryReader.cs
- StateMachineWorkflowDesigner.cs
- PropertyPathConverter.cs
- WindowsStatusBar.cs
- StaticResourceExtension.cs
- PersonalizationProviderHelper.cs
- StrongTypingException.cs
- EventLogEntryCollection.cs
- DecodeHelper.cs
- TerminateDesigner.cs
- ManagementEventWatcher.cs
- BaseParser.cs
- RenderData.cs
- BitmapEffectGeneralTransform.cs
- ScrollEvent.cs
- InputMethodStateTypeInfo.cs
- RangeContentEnumerator.cs
- SecureUICommand.cs
- ResolveDuplexCD1AsyncResult.cs
- VisualCollection.cs
- ValidationError.cs
- ButtonRenderer.cs
- TreeNodeStyle.cs
- HandlerBase.cs
- SecurityHelper.cs
- DocumentGridContextMenu.cs
- CodeDelegateInvokeExpression.cs
- QuotedStringWriteStateInfo.cs
- ManagedIStream.cs
- HoistedLocals.cs
- MethodImplAttribute.cs
- ContentType.cs
- OutputCacheSettings.cs
- StringWriter.cs
- RSAProtectedConfigurationProvider.cs
- AnnotationAdorner.cs
- MailHeaderInfo.cs
- DriveInfo.cs
- XmlSchemaObjectCollection.cs
- DbConnectionFactory.cs
- FeatureSupport.cs
- ParameterToken.cs
- PartitionerStatic.cs
- _OSSOCK.cs
- TableAdapterManagerHelper.cs
- WebPart.cs
- PocoPropertyAccessorStrategy.cs
- TypeResolver.cs
- FormatControl.cs
- PeerApplication.cs
- XmlValueConverter.cs
- DbConnectionPoolIdentity.cs
- TextEditorSpelling.cs
- ToolStripSeparatorRenderEventArgs.cs
- NavigationProperty.cs
- BatchServiceHost.cs
- SoapIncludeAttribute.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- TextParagraphProperties.cs
- MarkupCompilePass2.cs
- GroupBoxRenderer.cs
- BitmapPalette.cs
- XmlExpressionDumper.cs
- DrawingAttributes.cs
- Point3DCollection.cs
- FloaterBaseParaClient.cs
- XmlnsPrefixAttribute.cs
- ProvidersHelper.cs
- ExceptionUtil.cs
- OracleString.cs
- FieldToken.cs
- InternalConfigRoot.cs
- ServiceRoute.cs
- XmlWrappingWriter.cs
- SweepDirectionValidation.cs
- LocatorPartList.cs
- DifferencingCollection.cs
- Perspective.cs
- OleDbFactory.cs
- ForceCopyBuildProvider.cs
- LinqDataSourceHelper.cs
- MatchingStyle.cs