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
- XmlBindingWorker.cs
- NamedPermissionSet.cs
- EllipseGeometry.cs
- SqlDataSourceStatusEventArgs.cs
- IntSecurity.cs
- SQLRoleProvider.cs
- DataRelation.cs
- FixedHyperLink.cs
- httpapplicationstate.cs
- RelationshipDetailsRow.cs
- MenuItemStyle.cs
- HitTestDrawingContextWalker.cs
- BinaryKeyIdentifierClause.cs
- Token.cs
- PartialTrustHelpers.cs
- FileLogRecordHeader.cs
- ButtonField.cs
- DrawingImage.cs
- Documentation.cs
- CombinedGeometry.cs
- CompilerTypeWithParams.cs
- ScalarOps.cs
- RegexInterpreter.cs
- OverlappedAsyncResult.cs
- ActivationService.cs
- DetailsViewInsertedEventArgs.cs
- CryptoStream.cs
- DataGridViewCellCancelEventArgs.cs
- RegexWriter.cs
- HyperLinkColumn.cs
- ExpressionReplacer.cs
- OrderPreservingSpoolingTask.cs
- GenerateTemporaryTargetAssembly.cs
- GeneratedCodeAttribute.cs
- Fonts.cs
- FigureParagraph.cs
- MemberAssignmentAnalysis.cs
- PrivacyNoticeElement.cs
- OdbcErrorCollection.cs
- SendKeys.cs
- EntityPropertyMappingAttribute.cs
- IPAddressCollection.cs
- CompilerHelpers.cs
- NamedPipeAppDomainProtocolHandler.cs
- OrCondition.cs
- SqlErrorCollection.cs
- LinkClickEvent.cs
- WaitHandleCannotBeOpenedException.cs
- CommandValueSerializer.cs
- TextBoxRenderer.cs
- TagElement.cs
- QilUnary.cs
- PixelFormatConverter.cs
- DrawingBrush.cs
- OleDbDataAdapter.cs
- Encoding.cs
- BaseResourcesBuildProvider.cs
- ExpandCollapsePattern.cs
- XmlSchemaGroupRef.cs
- KeyPullup.cs
- ReaderWriterLockWrapper.cs
- XmlReader.cs
- AsyncCompletedEventArgs.cs
- ItemType.cs
- GenericParameterDataContract.cs
- BindingExpressionUncommonField.cs
- ChannelDemuxer.cs
- DataControlFieldHeaderCell.cs
- Rectangle.cs
- XmlAttribute.cs
- IndexerNameAttribute.cs
- TableLayoutPanel.cs
- CodeSnippetStatement.cs
- SoapExtensionReflector.cs
- MoveSizeWinEventHandler.cs
- PrinterUnitConvert.cs
- PlaceHolder.cs
- ArrayMergeHelper.cs
- ObjectSet.cs
- InputScopeManager.cs
- EdmComplexPropertyAttribute.cs
- RectangleHotSpot.cs
- SchemaCollectionCompiler.cs
- HttpConfigurationSystem.cs
- MasterPageBuildProvider.cs
- CustomSignedXml.cs
- ListBoxAutomationPeer.cs
- ArrayList.cs
- ZoomComboBox.cs
- XmlUrlEditor.cs
- IconBitmapDecoder.cs
- MouseEvent.cs
- TrackingSection.cs
- EllipticalNodeOperations.cs
- EndpointConfigContainer.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- XsltException.cs
- KeyboardEventArgs.cs
- XPathEmptyIterator.cs
- PagesChangedEventArgs.cs