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
- PackageRelationship.cs
- SoapIncludeAttribute.cs
- ControlBuilder.cs
- EvidenceBase.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- CodeParameterDeclarationExpressionCollection.cs
- BamlTreeNode.cs
- CodeConditionStatement.cs
- AbandonedMutexException.cs
- XmlCollation.cs
- RelatedEnd.cs
- PagerSettings.cs
- PropertyInfoSet.cs
- ScrollEventArgs.cs
- WorkItem.cs
- XmlDataSourceNodeDescriptor.cs
- DeferredTextReference.cs
- XmlQueryType.cs
- FileDialog_Vista_Interop.cs
- SaveFileDialog.cs
- QuinticEase.cs
- SystemIPInterfaceProperties.cs
- ExtenderProvidedPropertyAttribute.cs
- EntityProviderServices.cs
- Tokenizer.cs
- MetaForeignKeyColumn.cs
- Effect.cs
- TTSEngineProxy.cs
- MaterializeFromAtom.cs
- EventWaitHandle.cs
- ThemeInfoAttribute.cs
- FunctionImportMapping.cs
- HttpCacheParams.cs
- Viewport3DVisual.cs
- WinEventHandler.cs
- DispatcherExceptionFilterEventArgs.cs
- XPathEmptyIterator.cs
- RtfControls.cs
- ExpressionBuilder.cs
- ControllableStoryboardAction.cs
- ItemAutomationPeer.cs
- HttpHandlerAction.cs
- BinaryCommonClasses.cs
- DataBindingExpressionBuilder.cs
- FilterableAttribute.cs
- WeakReferenceList.cs
- MD5Cng.cs
- GridViewCommandEventArgs.cs
- SqlMetaData.cs
- HttpCookie.cs
- SiteMapNodeItemEventArgs.cs
- ExcCanonicalXml.cs
- AssemblyLoader.cs
- BulletedList.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- Fx.cs
- StylusEventArgs.cs
- MemberProjectionIndex.cs
- documentsequencetextcontainer.cs
- OutputCacheSection.cs
- Console.cs
- SparseMemoryStream.cs
- HttpListenerPrefixCollection.cs
- DescendantQuery.cs
- FileSystemInfo.cs
- EditingCoordinator.cs
- LocationReference.cs
- FtpWebResponse.cs
- NegatedCellConstant.cs
- PingOptions.cs
- GroupStyle.cs
- MonthChangedEventArgs.cs
- TypeUtil.cs
- SchemeSettingElementCollection.cs
- EntityProviderServices.cs
- PropertyGridView.cs
- AccessorTable.cs
- XmlReaderSettings.cs
- ProcessManager.cs
- WindowsFormsHostAutomationPeer.cs
- UntypedNullExpression.cs
- StylusOverProperty.cs
- DesignerProperties.cs
- EnumerableCollectionView.cs
- TextSelectionHighlightLayer.cs
- TableLayoutStyleCollection.cs
- TemplatedMailWebEventProvider.cs
- ListControl.cs
- ObjectComplexPropertyMapping.cs
- ReadOnlyHierarchicalDataSource.cs
- AccessedThroughPropertyAttribute.cs
- HttpHandlerAction.cs
- WebPartUtil.cs
- DoubleLinkList.cs
- CheckPair.cs
- HttpCachePolicyBase.cs
- HttpResponse.cs
- ObjectParameterCollection.cs
- ApplicationException.cs
- SchemaTableColumn.cs