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
- RNGCryptoServiceProvider.cs
- BinaryMessageEncodingBindingElement.cs
- ProtocolsConfigurationHandler.cs
- TextLineResult.cs
- Size3DConverter.cs
- SqlUserDefinedAggregateAttribute.cs
- ReferenceEqualityComparer.cs
- PkcsUtils.cs
- XPathNodeInfoAtom.cs
- Select.cs
- ActivityInstanceReference.cs
- SevenBitStream.cs
- XmlResolver.cs
- PostBackTrigger.cs
- BindingExpression.cs
- FixedMaxHeap.cs
- DataSvcMapFileSerializer.cs
- DesignerSerializerAttribute.cs
- CurrentChangingEventArgs.cs
- Parser.cs
- NativeCompoundFileAPIs.cs
- Form.cs
- PageBuildProvider.cs
- BitmapEffectRenderDataResource.cs
- SqlMethodCallConverter.cs
- Gdiplus.cs
- ComponentCommands.cs
- HtmlWindow.cs
- AssemblyInfo.cs
- ExtensionQuery.cs
- GroupBox.cs
- EntityDesignerUtils.cs
- ResetableIterator.cs
- ThreadExceptionEvent.cs
- ParamArrayAttribute.cs
- TypeListConverter.cs
- Odbc32.cs
- HMACSHA512.cs
- SettingsPropertyValueCollection.cs
- FtpWebRequest.cs
- TextContainerChangedEventArgs.cs
- HttpFileCollection.cs
- CompilationRelaxations.cs
- ServiceNameElement.cs
- CodeIterationStatement.cs
- InstanceDataCollection.cs
- AddInActivator.cs
- WeakReference.cs
- BinaryMethodMessage.cs
- BindValidator.cs
- WmpBitmapEncoder.cs
- ProfessionalColors.cs
- JoinCqlBlock.cs
- ObjectListCommandsPage.cs
- IisTraceListener.cs
- FormsAuthenticationEventArgs.cs
- Misc.cs
- DynamicValidator.cs
- SubpageParaClient.cs
- UdpTransportSettings.cs
- HttpDictionary.cs
- AdornerHitTestResult.cs
- SelectionRange.cs
- SiteMapDataSource.cs
- PresentationSource.cs
- Window.cs
- BindingList.cs
- MatrixTransform3D.cs
- IUnknownConstantAttribute.cs
- KeyedPriorityQueue.cs
- GridViewRowPresenter.cs
- InvalidEnumArgumentException.cs
- ListViewPagedDataSource.cs
- Privilege.cs
- SizeFConverter.cs
- SizeAnimation.cs
- FileUpload.cs
- TypeUnloadedException.cs
- ImmutableObjectAttribute.cs
- ResXResourceSet.cs
- FileLevelControlBuilderAttribute.cs
- DataColumnCollection.cs
- VisualTreeHelper.cs
- KeyedHashAlgorithm.cs
- ProvideValueServiceProvider.cs
- ParseNumbers.cs
- InfoCardClaimCollection.cs
- PersonalizablePropertyEntry.cs
- Win32Exception.cs
- NameTable.cs
- DateTimeFormatInfoScanner.cs
- DmlSqlGenerator.cs
- Compress.cs
- FindCriteriaCD1.cs
- SoapAttributeAttribute.cs
- Normalization.cs
- ImpersonateTokenRef.cs
- ContextMenuService.cs
- WebBodyFormatMessageProperty.cs
- ListViewDeleteEventArgs.cs