Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 2 / 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) { // _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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SiteMapNodeCollection.cs
- ClientConfigurationSystem.cs
- RecordsAffectedEventArgs.cs
- Rule.cs
- PointAnimationBase.cs
- MenuItem.cs
- BindingSource.cs
- ResolveCriteriaApril2005.cs
- GatewayIPAddressInformationCollection.cs
- CodeNamespaceImportCollection.cs
- SizeLimitedCache.cs
- InfoCardProofToken.cs
- FilterException.cs
- ResourcesBuildProvider.cs
- MenuStrip.cs
- ProviderSettings.cs
- WebBrowser.cs
- XPathArrayIterator.cs
- MultipleViewProviderWrapper.cs
- DataView.cs
- FilterQuery.cs
- DiscoveryReferences.cs
- TextMarkerSource.cs
- ProcessThread.cs
- UniqueIdentifierService.cs
- SecurityElementBase.cs
- UDPClient.cs
- PrivilegeNotHeldException.cs
- ItemContainerGenerator.cs
- KoreanCalendar.cs
- DefaultSection.cs
- HtmlValidatorAdapter.cs
- Restrictions.cs
- SoapFault.cs
- CommunicationException.cs
- StandardCommands.cs
- TreeNodeCollection.cs
- Guid.cs
- DSACryptoServiceProvider.cs
- StrokeNodeOperations.cs
- UidManager.cs
- ShimAsPublicXamlType.cs
- WindowsFont.cs
- PrintControllerWithStatusDialog.cs
- SqlDataSourceSelectingEventArgs.cs
- UInt32Converter.cs
- EmbossBitmapEffect.cs
- CompiledXpathExpr.cs
- TraceInternal.cs
- VirtualizedContainerService.cs
- DispatcherFrame.cs
- FlowLayoutSettings.cs
- TogglePattern.cs
- SapiAttributeParser.cs
- UrlMappingCollection.cs
- IisTraceWebEventProvider.cs
- XmlCharCheckingWriter.cs
- DesignTable.cs
- ErrorFormatterPage.cs
- EnumerableRowCollectionExtensions.cs
- MethodAccessException.cs
- TerminatorSinks.cs
- ValueTable.cs
- CodeTypeReferenceCollection.cs
- PasswordTextNavigator.cs
- SqlNotificationRequest.cs
- ObjectPersistData.cs
- XmlDocumentViewSchema.cs
- StatusBar.cs
- XmlCodeExporter.cs
- DataTableTypeConverter.cs
- FormsAuthenticationConfiguration.cs
- Highlights.cs
- ScrollContentPresenter.cs
- HandlerFactoryCache.cs
- DateTime.cs
- TextEditorParagraphs.cs
- _CookieModule.cs
- HandleCollector.cs
- FtpWebResponse.cs
- GroupItemAutomationPeer.cs
- Canvas.cs
- WindowsFormsSynchronizationContext.cs
- ServerValidateEventArgs.cs
- UInt32.cs
- QilInvokeEarlyBound.cs
- OutputCacheSection.cs
- ArrangedElement.cs
- Byte.cs
- CommandEventArgs.cs
- DesignerSerializerAttribute.cs
- AndCondition.cs
- ImageAttributes.cs
- Exception.cs
- HotSpot.cs
- KeyboardEventArgs.cs
- TextServicesDisplayAttribute.cs
- TraceListener.cs
- RemotingException.cs
- VScrollProperties.cs