Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 2 / 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(_isCompleted); } } } 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; } lock (this) { _isCompleted = true; if (_AsyncWaitHandle != null) { _AsyncWaitHandle.Set(); } } if (_acbd != null) { // _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; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewItem.cs
- InputLanguage.cs
- DataListItemCollection.cs
- CodeSnippetCompileUnit.cs
- Control.cs
- ToolStripSeparatorRenderEventArgs.cs
- ClientBuildManager.cs
- WebPartEditorCancelVerb.cs
- SystemWebSectionGroup.cs
- SchemaImporterExtensionElement.cs
- RequestQueryProcessor.cs
- HttpModuleCollection.cs
- InvokeMethodActivityDesigner.cs
- QuaternionIndependentAnimationStorage.cs
- HandleTable.cs
- ExpressionLexer.cs
- IdentityNotMappedException.cs
- Int32Converter.cs
- FontWeight.cs
- PerformanceCounterCategory.cs
- SafeCryptContextHandle.cs
- TextWriter.cs
- WriteTimeStream.cs
- ManipulationDelta.cs
- DataBoundControlHelper.cs
- FunctionQuery.cs
- PresentationTraceSources.cs
- DataGridViewRowsRemovedEventArgs.cs
- SectionUpdates.cs
- WhereQueryOperator.cs
- ConfigXmlWhitespace.cs
- HttpModulesSection.cs
- ToolBarButtonClickEvent.cs
- StylusTip.cs
- DoubleAnimationClockResource.cs
- PixelFormats.cs
- CacheMode.cs
- PeerCollaborationPermission.cs
- FormsAuthenticationUser.cs
- EmptyQuery.cs
- SiteMapPath.cs
- DocumentCollection.cs
- PageStatePersister.cs
- MergeLocalizationDirectives.cs
- WindowsUpDown.cs
- NeutralResourcesLanguageAttribute.cs
- OutputCacheSection.cs
- BasePattern.cs
- ManagementNamedValueCollection.cs
- Vector3DCollection.cs
- Decoder.cs
- NativeMethods.cs
- StdRegProviderWrapper.cs
- ProfileProvider.cs
- AppSettingsSection.cs
- AccessKeyManager.cs
- UnmanagedMemoryStream.cs
- DataService.cs
- ImageListStreamer.cs
- ScriptResourceAttribute.cs
- SqlTopReducer.cs
- GlyphingCache.cs
- Sorting.cs
- Effect.cs
- DataSourceSelectArguments.cs
- EmptyElement.cs
- WindowsRebar.cs
- Lease.cs
- ProviderIncompatibleException.cs
- ClientProxyGenerator.cs
- Int32KeyFrameCollection.cs
- ControlCollection.cs
- DataKeyArray.cs
- TabControl.cs
- PopupEventArgs.cs
- NamespaceExpr.cs
- OdbcDataReader.cs
- RequestQueue.cs
- StylusCaptureWithinProperty.cs
- PropertyDescriptorGridEntry.cs
- HtmlInputImage.cs
- XmlAttributeAttribute.cs
- Popup.cs
- SmtpTransport.cs
- SortExpressionBuilder.cs
- TreeView.cs
- ProjectionPlanCompiler.cs
- CacheVirtualItemsEvent.cs
- AppSettingsSection.cs
- HtmlInputSubmit.cs
- PageCache.cs
- StringDictionaryWithComparer.cs
- TextInfo.cs
- TextParaClient.cs
- ByteFacetDescriptionElement.cs
- RenamedEventArgs.cs
- ViewStateException.cs
- TaskResultSetter.cs
- SendingRequestEventArgs.cs
- PowerStatus.cs