Code:
/ FX-1434 / FX-1434 / 1.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
- ResourceReferenceExpressionConverter.cs
- CursorConverter.cs
- TogglePattern.cs
- ModelFactory.cs
- BindingNavigator.cs
- ReliabilityContractAttribute.cs
- BuildProvidersCompiler.cs
- Transform3D.cs
- DocumentStream.cs
- ProtocolViolationException.cs
- ApplicationBuildProvider.cs
- SafeBitVector32.cs
- XmlConverter.cs
- TeredoHelper.cs
- XsltArgumentList.cs
- ButtonRenderer.cs
- _ProxyChain.cs
- ReferentialConstraint.cs
- DBAsyncResult.cs
- MobileControlsSectionHandler.cs
- PrintPreviewControl.cs
- ButtonFieldBase.cs
- TrailingSpaceComparer.cs
- DependencyObjectType.cs
- SqlDataReaderSmi.cs
- DesignTimeParseData.cs
- AssemblyResourceLoader.cs
- ReflectPropertyDescriptor.cs
- LongTypeConverter.cs
- DataGridViewAddColumnDialog.cs
- OLEDB_Util.cs
- SqlWriter.cs
- PartialTrustVisibleAssemblyCollection.cs
- SQLDecimal.cs
- ComPersistableTypeElement.cs
- BamlLocalizer.cs
- CompatibleComparer.cs
- ThrowHelper.cs
- PeerValidationBehavior.cs
- XmlJsonReader.cs
- PLINQETWProvider.cs
- ColorDialog.cs
- SimpleHandlerFactory.cs
- SqlExpander.cs
- NameNode.cs
- DockProviderWrapper.cs
- DesignSurfaceEvent.cs
- CodeDomComponentSerializationService.cs
- Pens.cs
- EventEntry.cs
- SqlNodeAnnotations.cs
- ColumnHeaderConverter.cs
- FlowLayoutPanel.cs
- WebPartDisplayModeCollection.cs
- TransactedBatchingBehavior.cs
- Assert.cs
- AssemblyBuilder.cs
- MD5CryptoServiceProvider.cs
- ExceptionUtil.cs
- EntityDataSourceStatementEditor.cs
- _CacheStreams.cs
- IndexedGlyphRun.cs
- SpecularMaterial.cs
- cookie.cs
- NameValueCollection.cs
- MappingItemCollection.cs
- ChameleonKey.cs
- HttpWriter.cs
- MetadataCollection.cs
- DelegateSerializationHolder.cs
- TextSegment.cs
- DynamicAttribute.cs
- BuildResult.cs
- BitSet.cs
- FieldToken.cs
- HtmlEncodedRawTextWriter.cs
- CompositeDispatchFormatter.cs
- Queue.cs
- OrElse.cs
- Emitter.cs
- GridViewPageEventArgs.cs
- CopyAttributesAction.cs
- ToolStripDropDownButton.cs
- PathParser.cs
- DurationConverter.cs
- FtpCachePolicyElement.cs
- WebEventTraceProvider.cs
- HostingEnvironmentException.cs
- CultureTableRecord.cs
- WebPartVerbsEventArgs.cs
- wmiprovider.cs
- WebPartVerb.cs
- DATA_BLOB.cs
- DocumentPageView.cs
- QueryAccessibilityHelpEvent.cs
- Timer.cs
- SelectionItemPattern.cs
- EntityProxyFactory.cs
- NullableLongAverageAggregationOperator.cs
- DataSourceView.cs