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
- RectangleGeometry.cs
- CompensableActivity.cs
- BinaryConverter.cs
- DefaultIfEmptyQueryOperator.cs
- SqlConnectionPoolProviderInfo.cs
- TrackingCondition.cs
- FieldInfo.cs
- EntityDataReader.cs
- DataChangedEventManager.cs
- JsonWriter.cs
- Brush.cs
- ParserHooks.cs
- GlyphTypeface.cs
- XmlCharacterData.cs
- ServiceDescription.cs
- WmlListAdapter.cs
- CapiSymmetricAlgorithm.cs
- ScriptManagerProxy.cs
- CapiNative.cs
- WorkflowDesignerMessageFilter.cs
- MenuCommand.cs
- XmlILAnnotation.cs
- SessionStateUtil.cs
- ReadOnlyCollectionBase.cs
- CategoryGridEntry.cs
- SystemColors.cs
- XPathArrayIterator.cs
- ViewBox.cs
- ToolStripDropDown.cs
- RepeatButton.cs
- XhtmlTextWriter.cs
- MenuItemStyle.cs
- XmlIlTypeHelper.cs
- PageParser.cs
- XmlWriter.cs
- MetadataStore.cs
- ScrollBarAutomationPeer.cs
- SqlNamer.cs
- PrintController.cs
- LocalizedNameDescriptionPair.cs
- CodeBlockBuilder.cs
- UnsafeCollabNativeMethods.cs
- Identity.cs
- Label.cs
- HtmlInputSubmit.cs
- TextTreeInsertUndoUnit.cs
- BamlTreeUpdater.cs
- ControlCachePolicy.cs
- UrlEncodedParameterWriter.cs
- ReferenceConverter.cs
- DataKeyArray.cs
- CodeDirectiveCollection.cs
- ReadOnlyDataSourceView.cs
- WorkItem.cs
- EntityContainer.cs
- CommandField.cs
- GcSettings.cs
- SendingRequestEventArgs.cs
- StorageInfo.cs
- JournalEntry.cs
- DirectoryObjectSecurity.cs
- TTSVoice.cs
- PageSettings.cs
- WebPartZone.cs
- AttributeQuery.cs
- SettingsProviderCollection.cs
- PreviewControlDesigner.cs
- MatrixValueSerializer.cs
- DropDownList.cs
- XmlParserContext.cs
- ClientTargetSection.cs
- TextTreeText.cs
- FixedPosition.cs
- HeaderedContentControl.cs
- TemplateGroupCollection.cs
- CodeMethodInvokeExpression.cs
- MbpInfo.cs
- FileNotFoundException.cs
- UIPermission.cs
- NestPullup.cs
- CategoryList.cs
- ImageAttributes.cs
- SignedPkcs7.cs
- XmlIgnoreAttribute.cs
- XamlFigureLengthSerializer.cs
- wgx_commands.cs
- ResourcePool.cs
- _TransmitFileOverlappedAsyncResult.cs
- StringResourceManager.cs
- DeviceSpecific.cs
- WebBrowsableAttribute.cs
- LassoHelper.cs
- InvalidComObjectException.cs
- DLinqTableProvider.cs
- ExpandSegment.cs
- CacheOutputQuery.cs
- DictionarySurrogate.cs
- DataGridPagingPage.cs
- LinkButton.cs
- shaperfactoryquerycacheentry.cs