Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Remoting / Channels / CORE / BasicAsyncResult.cs / 1305376 / BasicAsyncResult.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** File: BasicAsyncResult.cs ** ** Purpose: Base class for async result implementations. ** ** Date: Oct 21, 2001 ** ===========================================================*/ using System; using System.Threading; namespace System.Runtime.Remoting.Channels { internal class BasicAsyncResult : IAsyncResult { private AsyncCallback _asyncCallback; private Object _asyncState; private Object _returnValue; private Exception _exception; private bool _bIsComplete; private ManualResetEvent _manualResetEvent; internal BasicAsyncResult(AsyncCallback callback, Object state) { _asyncCallback = callback; _asyncState = state; } // BasicAsyncResult public Object AsyncState { get { return _asyncState; } } // AsyncState public WaitHandle AsyncWaitHandle { get { bool bSavedIsComplete = _bIsComplete; if (_manualResetEvent == null) { lock (this) { if (_manualResetEvent == null) { _manualResetEvent = new ManualResetEvent(bSavedIsComplete); } } } if (!bSavedIsComplete && _bIsComplete) _manualResetEvent.Set(); return (WaitHandle)_manualResetEvent; } } // AsyncWaitHandle public bool CompletedSynchronously { get { return false; } } // CompletedSynchronously public bool IsCompleted { get { return _bIsComplete; } } // IsCompleted internal Exception Exception { get { return _exception; } } internal void SetComplete(Object returnValue, Exception exception) { _returnValue = returnValue; _exception = exception; CleanupOnComplete(); _bIsComplete = true; try { if (_manualResetEvent != null) _manualResetEvent.Set(); } catch (Exception e) { if (_exception == null) _exception = e; } // invoke the callback if (_asyncCallback != null) _asyncCallback(this); } // SetComplete internal virtual void CleanupOnComplete() { } } // BasicAsyncResult } // namespace System.Runtime.Remoting.Channels // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** File: BasicAsyncResult.cs ** ** Purpose: Base class for async result implementations. ** ** Date: Oct 21, 2001 ** ===========================================================*/ using System; using System.Threading; namespace System.Runtime.Remoting.Channels { internal class BasicAsyncResult : IAsyncResult { private AsyncCallback _asyncCallback; private Object _asyncState; private Object _returnValue; private Exception _exception; private bool _bIsComplete; private ManualResetEvent _manualResetEvent; internal BasicAsyncResult(AsyncCallback callback, Object state) { _asyncCallback = callback; _asyncState = state; } // BasicAsyncResult public Object AsyncState { get { return _asyncState; } } // AsyncState public WaitHandle AsyncWaitHandle { get { bool bSavedIsComplete = _bIsComplete; if (_manualResetEvent == null) { lock (this) { if (_manualResetEvent == null) { _manualResetEvent = new ManualResetEvent(bSavedIsComplete); } } } if (!bSavedIsComplete && _bIsComplete) _manualResetEvent.Set(); return (WaitHandle)_manualResetEvent; } } // AsyncWaitHandle public bool CompletedSynchronously { get { return false; } } // CompletedSynchronously public bool IsCompleted { get { return _bIsComplete; } } // IsCompleted internal Exception Exception { get { return _exception; } } internal void SetComplete(Object returnValue, Exception exception) { _returnValue = returnValue; _exception = exception; CleanupOnComplete(); _bIsComplete = true; try { if (_manualResetEvent != null) _manualResetEvent.Set(); } catch (Exception e) { if (_exception == null) _exception = e; } // invoke the callback if (_asyncCallback != null) _asyncCallback(this); } // SetComplete internal virtual void CleanupOnComplete() { } } // BasicAsyncResult } // namespace System.Runtime.Remoting.Channels // 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
- Wizard.cs
- DataTablePropertyDescriptor.cs
- hresults.cs
- SQLRoleProvider.cs
- SmiEventSink_Default.cs
- SafeRightsManagementSessionHandle.cs
- XmlSerializerFactory.cs
- PointLight.cs
- DrawingGroupDrawingContext.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- DragSelectionMessageFilter.cs
- RotateTransform3D.cs
- WebPartConnectionsConfigureVerb.cs
- FlowLayoutSettings.cs
- AssemblyAttributesGoHere.cs
- EnlistmentTraceIdentifier.cs
- PropertyMap.cs
- SineEase.cs
- ScrollBarRenderer.cs
- AdapterDictionary.cs
- RadioButton.cs
- Quaternion.cs
- XPathExpr.cs
- UIElementParagraph.cs
- XmlIncludeAttribute.cs
- MobileControlsSectionHandler.cs
- ManipulationDeltaEventArgs.cs
- TextContainerChangeEventArgs.cs
- SelectionBorderGlyph.cs
- ClientSettingsProvider.cs
- InputLangChangeRequestEvent.cs
- ClientSideQueueItem.cs
- TextEditorTyping.cs
- DirectoryRedirect.cs
- safesecurityhelperavalon.cs
- BindingWorker.cs
- BoolExpr.cs
- AssemblyNameProxy.cs
- DocumentXPathNavigator.cs
- FacetValues.cs
- InnerItemCollectionView.cs
- SerializationInfoEnumerator.cs
- BinaryReader.cs
- util.cs
- HtmlElement.cs
- InstanceContext.cs
- OleDbConnectionFactory.cs
- AtomServiceDocumentSerializer.cs
- ValidationService.cs
- InputQueue.cs
- UpdateTranslator.cs
- UpdateTracker.cs
- ComponentSerializationService.cs
- RelationshipWrapper.cs
- AnnotationObservableCollection.cs
- WebPartDisplayModeCancelEventArgs.cs
- SoapMessage.cs
- UInt64Storage.cs
- AutoGeneratedFieldProperties.cs
- LoginViewDesigner.cs
- AdapterDictionary.cs
- Utils.cs
- CodeVariableDeclarationStatement.cs
- OleDbInfoMessageEvent.cs
- GenerateScriptTypeAttribute.cs
- DataGridCellItemAutomationPeer.cs
- EntitySqlQueryCacheEntry.cs
- Site.cs
- XmlSchemaExternal.cs
- IImplicitResourceProvider.cs
- GridView.cs
- NavigationEventArgs.cs
- LogAppendAsyncResult.cs
- Ppl.cs
- Quad.cs
- BinaryCommonClasses.cs
- ObjectComplexPropertyMapping.cs
- SHA384.cs
- ToolboxComponentsCreatedEventArgs.cs
- ObjectListField.cs
- Visitors.cs
- MarkupCompiler.cs
- TableSectionStyle.cs
- DbDataReader.cs
- ClientRuntimeConfig.cs
- DocumentGridPage.cs
- precedingsibling.cs
- BaseParagraph.cs
- IOException.cs
- WebPartCancelEventArgs.cs
- DataTemplateSelector.cs
- BindingListCollectionView.cs
- TableRowGroup.cs
- Internal.cs
- PriorityRange.cs
- PictureBox.cs
- PopupRootAutomationPeer.cs
- XPathNodeHelper.cs
- LinkConverter.cs
- XmlSchemaAttributeGroupRef.cs