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
- AppDomainFactory.cs
- ImageListStreamer.cs
- Action.cs
- GeometryGroup.cs
- InputScopeNameConverter.cs
- EventNotify.cs
- SizeChangedEventArgs.cs
- TextEncodedRawTextWriter.cs
- assemblycache.cs
- IncrementalHitTester.cs
- ZeroOpNode.cs
- SqlVisitor.cs
- TokenizerHelper.cs
- TreeViewDesigner.cs
- ObfuscateAssemblyAttribute.cs
- DesignerToolboxInfo.cs
- NavigationService.cs
- xdrvalidator.cs
- sqlmetadatafactory.cs
- ClickablePoint.cs
- KeysConverter.cs
- CfgParser.cs
- PointAnimationUsingKeyFrames.cs
- ExpandableObjectConverter.cs
- NativeMethods.cs
- HttpResponseInternalWrapper.cs
- WindowInteractionStateTracker.cs
- GenericEnumConverter.cs
- VariableModifiersHelper.cs
- MetricEntry.cs
- SqlWriter.cs
- DataGridViewColumnConverter.cs
- TripleDESCryptoServiceProvider.cs
- StrongNameIdentityPermission.cs
- ParserExtension.cs
- PropertiesTab.cs
- Models.cs
- ObjectToken.cs
- ListViewInsertionMark.cs
- ValueUtilsSmi.cs
- DocumentOrderQuery.cs
- XmlSchemaInferenceException.cs
- Control.cs
- ChannelServices.cs
- XhtmlTextWriter.cs
- SqlConnectionStringBuilder.cs
- ApplicationActivator.cs
- DispatcherHookEventArgs.cs
- LabelEditEvent.cs
- PublisherMembershipCondition.cs
- ViewStateException.cs
- SamlAuthorizationDecisionStatement.cs
- StructuralObject.cs
- Object.cs
- StringDictionaryEditor.cs
- EastAsianLunisolarCalendar.cs
- FrameworkPropertyMetadata.cs
- StateElementCollection.cs
- CharConverter.cs
- DerivedKeySecurityToken.cs
- TypeUnloadedException.cs
- TextParaLineResult.cs
- ExpandedProjectionNode.cs
- TagPrefixInfo.cs
- CachingHintValidation.cs
- Model3DCollection.cs
- FormsAuthenticationConfiguration.cs
- ToolStripPanelRenderEventArgs.cs
- QueryStringHandler.cs
- _CommandStream.cs
- DockAndAnchorLayout.cs
- HttpCapabilitiesEvaluator.cs
- DocumentPageViewAutomationPeer.cs
- UnsupportedPolicyOptionsException.cs
- WebPartHelpVerb.cs
- DetailsViewModeEventArgs.cs
- TransformerConfigurationWizardBase.cs
- WindowPatternIdentifiers.cs
- SizeConverter.cs
- CanonicalizationDriver.cs
- PerspectiveCamera.cs
- SQlBooleanStorage.cs
- MethodCallConverter.cs
- WebConfigurationManager.cs
- XmlBinaryReader.cs
- EntityContainerEntitySet.cs
- RequestCachePolicy.cs
- EncryptRequest.cs
- HorizontalAlignConverter.cs
- LocalizabilityAttribute.cs
- VectorCollectionValueSerializer.cs
- IntSecurity.cs
- SizeChangedEventArgs.cs
- XmlWriterTraceListener.cs
- HostedHttpTransportManager.cs
- DataGrid.cs
- StaticContext.cs
- SymbolMethod.cs
- ArrayTypeMismatchException.cs
- InheritanceContextChangedEventManager.cs