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
- ListBase.cs
- EditorBrowsableAttribute.cs
- _AcceptOverlappedAsyncResult.cs
- WpfXamlType.cs
- VectorKeyFrameCollection.cs
- Fonts.cs
- MetadataHelper.cs
- OptimalTextSource.cs
- formatter.cs
- DateBoldEvent.cs
- SafeLocalMemHandle.cs
- Metadata.cs
- NavigationProperty.cs
- OrthographicCamera.cs
- DataGrid.cs
- XmlDictionaryReader.cs
- DependentList.cs
- Model3DGroup.cs
- DataSourceUtil.cs
- Rotation3D.cs
- FontDialog.cs
- SmtpFailedRecipientException.cs
- SqlTrackingQuery.cs
- ModelPropertyImpl.cs
- TargetParameterCountException.cs
- QilFactory.cs
- CompensationDesigner.cs
- WorkflowServiceNamespace.cs
- FrameAutomationPeer.cs
- SchemeSettingElement.cs
- WebPartDesigner.cs
- DataGridViewColumn.cs
- CardSpaceException.cs
- SoundPlayer.cs
- HTTPNotFoundHandler.cs
- DataBoundControlAdapter.cs
- ProfileProvider.cs
- DataGridCellEditEndingEventArgs.cs
- TypedTableGenerator.cs
- ErasingStroke.cs
- TCPListener.cs
- XamlClipboardData.cs
- AnimationStorage.cs
- ActionFrame.cs
- ImagingCache.cs
- ConnectionConsumerAttribute.cs
- ArrayConverter.cs
- SwitchLevelAttribute.cs
- TemplateBindingExtension.cs
- ResourcesBuildProvider.cs
- SafeTimerHandle.cs
- ComplexType.cs
- FunctionUpdateCommand.cs
- SafeSecurityHelper.cs
- PerformanceCounterPermissionEntry.cs
- MultiByteCodec.cs
- JavascriptXmlWriterWrapper.cs
- Guid.cs
- TypeUsageBuilder.cs
- SessionEndedEventArgs.cs
- ListViewItem.cs
- BreakSafeBase.cs
- ScrollChangedEventArgs.cs
- ThicknessAnimationUsingKeyFrames.cs
- MsmqOutputSessionChannel.cs
- TemplatedWizardStep.cs
- WindowsImpersonationContext.cs
- DataGridPagerStyle.cs
- Int32Animation.cs
- CircleHotSpot.cs
- Currency.cs
- ValidatorCollection.cs
- ColorBlend.cs
- DataListItemEventArgs.cs
- BamlCollectionHolder.cs
- FileDialogPermission.cs
- MergeExecutor.cs
- HostedElements.cs
- CacheEntry.cs
- MD5CryptoServiceProvider.cs
- StatusStrip.cs
- ScrollBarRenderer.cs
- RoutedEvent.cs
- PropertyMap.cs
- SamlAssertion.cs
- LifetimeServices.cs
- TransportListener.cs
- ConfigurationLocation.cs
- ReadContentAsBinaryHelper.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- DataBinding.cs
- ToolStripDropDownClosedEventArgs.cs
- ProcessModelInfo.cs
- MsmqInputSessionChannelListener.cs
- RijndaelCryptoServiceProvider.cs
- MeshGeometry3D.cs
- GatewayDefinition.cs
- ApplicationSecurityInfo.cs
- DataGridViewRowEventArgs.cs
- Vector3DAnimation.cs