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
- ObjectItemCollectionAssemblyCacheEntry.cs
- Serializer.cs
- CaseInsensitiveOrdinalStringComparer.cs
- EntityDataSourceContextDisposingEventArgs.cs
- ExceptionUtil.cs
- MasterPageCodeDomTreeGenerator.cs
- DataKey.cs
- FlowDocumentReaderAutomationPeer.cs
- WebServiceClientProxyGenerator.cs
- OciHandle.cs
- CodeMemberEvent.cs
- DataColumnChangeEvent.cs
- ExtendedProtectionPolicyTypeConverter.cs
- TemplateBaseAction.cs
- ParentQuery.cs
- CommunicationObjectFaultedException.cs
- LogManagementAsyncResult.cs
- Listbox.cs
- TextAutomationPeer.cs
- ECDsa.cs
- OleTxTransactionInfo.cs
- DefaultAsyncDataDispatcher.cs
- SelectionItemPattern.cs
- Context.cs
- ProxyHelper.cs
- GetPageNumberCompletedEventArgs.cs
- TreeNodeCollection.cs
- HttpRuntimeSection.cs
- EdmConstants.cs
- ListViewCommandEventArgs.cs
- VariableDesigner.xaml.cs
- UserControlDesigner.cs
- WsrmFault.cs
- BooleanProjectedSlot.cs
- WSDualHttpSecurityElement.cs
- TextTreeRootTextBlock.cs
- ScriptResourceDefinition.cs
- NameObjectCollectionBase.cs
- ButtonRenderer.cs
- smtppermission.cs
- WebBaseEventKeyComparer.cs
- Util.cs
- BindingContext.cs
- XamlReader.cs
- FormsAuthentication.cs
- FixedHighlight.cs
- ArgumentNullException.cs
- FixedSOMElement.cs
- BuildManager.cs
- TimeSpanParse.cs
- DesignerActionItemCollection.cs
- Part.cs
- ChangeConflicts.cs
- OleDbSchemaGuid.cs
- SqlConnectionHelper.cs
- AssemblyInfo.cs
- ControlBindingsCollection.cs
- SapiRecoContext.cs
- EndpointDiscoveryMetadata11.cs
- WebPartDeleteVerb.cs
- LongTypeConverter.cs
- ErrorHandler.cs
- SchemaSetCompiler.cs
- NamespaceDecl.cs
- KeyFrames.cs
- Composition.cs
- GraphicsPathIterator.cs
- XPathScanner.cs
- _DisconnectOverlappedAsyncResult.cs
- DataStreams.cs
- CommandExpr.cs
- LayoutUtils.cs
- SplitterCancelEvent.cs
- ParenthesizePropertyNameAttribute.cs
- TraceLevelHelper.cs
- DefaultSection.cs
- DataStreams.cs
- CryptoHandle.cs
- SerializationStore.cs
- SignedInfo.cs
- DesignerAutoFormatStyle.cs
- StickyNoteHelper.cs
- UriTemplatePathPartiallyEquivalentSet.cs
- DbProviderServices.cs
- TimelineGroup.cs
- RemotingException.cs
- FontStyle.cs
- QilStrConcat.cs
- ThreadStateException.cs
- CqlParserHelpers.cs
- RunInstallerAttribute.cs
- UnsafeCollabNativeMethods.cs
- GridView.cs
- Lease.cs
- SchemaContext.cs
- LogAppendAsyncResult.cs
- RepeatBehavior.cs
- KoreanCalendar.cs
- Line.cs
- DataServiceProviderWrapper.cs