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
- regiisutil.cs
- ClientBuildManager.cs
- WebPartDescriptionCollection.cs
- ReflectionPermission.cs
- TableLayoutStyle.cs
- ListChangedEventArgs.cs
- Debugger.cs
- Descriptor.cs
- XmlILIndex.cs
- EntityWrapper.cs
- VectorCollection.cs
- ByteStreamMessageEncoder.cs
- AsymmetricAlgorithm.cs
- DataGridViewAutoSizeModeEventArgs.cs
- BehaviorEditorPart.cs
- XmlSchemaComplexType.cs
- XsltException.cs
- InputLanguageManager.cs
- TableItemStyle.cs
- XmlCustomFormatter.cs
- MobileListItemCollection.cs
- DataServiceStreamResponse.cs
- StartUpEventArgs.cs
- ToolStripStatusLabel.cs
- HttpConfigurationSystem.cs
- ActivityExecutionFilter.cs
- ScriptResourceAttribute.cs
- XmlName.cs
- ManagementPath.cs
- Timer.cs
- OrderedEnumerableRowCollection.cs
- RtfNavigator.cs
- ClassGenerator.cs
- MediaCommands.cs
- WebBrowserContainer.cs
- TypedElement.cs
- TemplatedMailWebEventProvider.cs
- MenuItemCollection.cs
- CardSpaceException.cs
- OdbcUtils.cs
- CustomCredentialPolicy.cs
- BamlLocalizableResource.cs
- CustomLineCap.cs
- QilDataSource.cs
- FormsAuthenticationUser.cs
- TimeIntervalCollection.cs
- TextElement.cs
- EmbeddedMailObjectsCollection.cs
- ConsumerConnectionPoint.cs
- Hex.cs
- HotSpot.cs
- OdbcConnectionFactory.cs
- DbConnectionStringCommon.cs
- ToolStripPanelCell.cs
- PropertyInfoSet.cs
- XmlSchemaComplexType.cs
- SystemEvents.cs
- EntityDataSourceMemberPath.cs
- HierarchicalDataSourceControl.cs
- DynamicObject.cs
- ClientScriptManager.cs
- SplitterEvent.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- RuleInfoComparer.cs
- XmlHierarchyData.cs
- FunctionQuery.cs
- FormattedText.cs
- SettingsSection.cs
- SettingsBase.cs
- SapiRecognizer.cs
- LiteralControl.cs
- ExpressionPrefixAttribute.cs
- SessionStateSection.cs
- EventListener.cs
- Wrapper.cs
- RequestStatusBarUpdateEventArgs.cs
- MailMessageEventArgs.cs
- CryptoConfig.cs
- EncoderParameters.cs
- RegionInfo.cs
- FixedSOMTableCell.cs
- UrlAuthFailedErrorFormatter.cs
- FileSystemEnumerable.cs
- EditingCoordinator.cs
- StatusBarItemAutomationPeer.cs
- FunctionCommandText.cs
- UnsafeNativeMethods.cs
- WebBrowserDocumentCompletedEventHandler.cs
- counter.cs
- ImageConverter.cs
- HwndProxyElementProvider.cs
- Activator.cs
- TextBoxView.cs
- SystemUdpStatistics.cs
- MetadataProperty.cs
- mediapermission.cs
- XmlBinaryWriter.cs
- XmlWriter.cs
- DynamicControlParameter.cs
- DataReceivedEventArgs.cs