Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1305376 / 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 { [System.Security.SecurityCritical] // auto-generated 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; } [System.Security.SecurityCritical] // auto-generated_required 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; } [System.Security.SecurityCritical] // auto-generated_required public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException( Environment.GetResourceString("NotSupported_Method")); } public IMessageSink NextSink { [System.Security.SecurityCritical] // auto-generated_required 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PropertyConverter.cs
- RowToFieldTransformer.cs
- WorkBatch.cs
- log.cs
- RequestUriProcessor.cs
- PageThemeCodeDomTreeGenerator.cs
- UriWriter.cs
- TextOutput.cs
- Style.cs
- Button.cs
- ServiceOperationListItem.cs
- FileDataSource.cs
- OdbcEnvironmentHandle.cs
- TextEditorThreadLocalStore.cs
- PenThreadPool.cs
- XslAstAnalyzer.cs
- HttpModuleAction.cs
- XDeferredAxisSource.cs
- Win32KeyboardDevice.cs
- ReachVisualSerializerAsync.cs
- XmlSchemaComplexContentExtension.cs
- ObjectParameter.cs
- BitmapFrameEncode.cs
- JsonWriterDelegator.cs
- BoundColumn.cs
- OracleFactory.cs
- FtpRequestCacheValidator.cs
- ListItemConverter.cs
- ClrPerspective.cs
- SelectionGlyph.cs
- ClientSponsor.cs
- ColumnPropertiesGroup.cs
- UpDownBase.cs
- DataGridViewRow.cs
- PersonalizationProviderCollection.cs
- ExpandedWrapper.cs
- DataGridViewCell.cs
- CodePropertyReferenceExpression.cs
- InvariantComparer.cs
- DataGridLinkButton.cs
- SByteStorage.cs
- CLRBindingWorker.cs
- ToolStripDropDownItem.cs
- DesignerObject.cs
- DataGridItem.cs
- SoapProtocolReflector.cs
- SmtpMail.cs
- AssociationTypeEmitter.cs
- ByteFacetDescriptionElement.cs
- PageSettings.cs
- OnOperation.cs
- EntityContainerEntitySet.cs
- CreateInstanceBinder.cs
- XComponentModel.cs
- DocumentViewerAutomationPeer.cs
- WithParamAction.cs
- ToolStripStatusLabel.cs
- SqlTrackingService.cs
- SchemaSetCompiler.cs
- XmlAttributeProperties.cs
- MessageDescriptionCollection.cs
- ValidationHelper.cs
- IntellisenseTextBox.designer.cs
- XhtmlCssHandler.cs
- CodeTypeReferenceCollection.cs
- Binding.cs
- StructuralObject.cs
- PageParserFilter.cs
- AttachedPropertyDescriptor.cs
- CollectionAdapters.cs
- AuthorizationRuleCollection.cs
- DirectoryNotFoundException.cs
- ObjectCloneHelper.cs
- ChannelCredentials.cs
- Schema.cs
- Instrumentation.cs
- PointCollectionConverter.cs
- VolatileEnlistmentMultiplexing.cs
- MarkupCompiler.cs
- PageHandlerFactory.cs
- XmlTextAttribute.cs
- Point3DCollection.cs
- CategoryEditor.cs
- ConfigXmlComment.cs
- SqlCommandBuilder.cs
- BlurBitmapEffect.cs
- Constraint.cs
- TransactionWaitAsyncResult.cs
- MetadataSerializer.cs
- DeviceContext.cs
- ProcessModuleCollection.cs
- CodeMemberMethod.cs
- tibetanshape.cs
- SQLRoleProvider.cs
- XsdDateTime.cs
- WindowPattern.cs
- ChameleonKey.cs
- BulletedList.cs
- LinqDataSourceContextEventArgs.cs
- ActiveXMessageFormatter.cs