Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Remoting / AsyncResult.cs / 1 / 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
{
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(_isCompleted);
}
}
}
public virtual WaitHandle AsyncWaitHandle
{
get
{
FaultInWaitHandle();
return _AsyncWaitHandle;
}
}
public virtual void SetMessageCtrl(IMessageCtrl mc)
{
_mc = mc;
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
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;
}
lock (this)
{
_isCompleted = true;
if (_AsyncWaitHandle != null)
{
_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;
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
throw new NotSupportedException(
Environment.GetResourceString("NotSupported_Method"));
}
public IMessageSink NextSink
{
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
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.
// ==++==
//
// 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
{
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(_isCompleted);
}
}
}
public virtual WaitHandle AsyncWaitHandle
{
get
{
FaultInWaitHandle();
return _AsyncWaitHandle;
}
}
public virtual void SetMessageCtrl(IMessageCtrl mc)
{
_mc = mc;
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
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;
}
lock (this)
{
_isCompleted = true;
if (_AsyncWaitHandle != null)
{
_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;
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
public virtual IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
throw new NotSupportedException(
Environment.GetResourceString("NotSupported_Method"));
}
public IMessageSink NextSink
{
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
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
- GridViewAutomationPeer.cs
- ListChangedEventArgs.cs
- ClonableStack.cs
- ColorKeyFrameCollection.cs
- BuildProvidersCompiler.cs
- MsmqOutputChannel.cs
- SerializationStore.cs
- DocumentReference.cs
- PropertyValueChangedEvent.cs
- FrameworkPropertyMetadata.cs
- RuleCache.cs
- StorageInfo.cs
- FontClient.cs
- WebPartAddingEventArgs.cs
- SystemFonts.cs
- Convert.cs
- AuthorizationBehavior.cs
- ServiceDurableInstance.cs
- ProgressBarAutomationPeer.cs
- odbcmetadatacolumnnames.cs
- XmlLoader.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SplayTreeNode.cs
- PnrpPermission.cs
- WindowsStatic.cs
- MenuItemCollectionEditor.cs
- TagMapCollection.cs
- RichTextBox.cs
- VectorValueSerializer.cs
- WorkItem.cs
- PageRequestManager.cs
- Win32Native.cs
- MaterialGroup.cs
- CompiledQueryCacheKey.cs
- WeakReferenceKey.cs
- Closure.cs
- GcSettings.cs
- SaveFileDialog.cs
- ThreadNeutralSemaphore.cs
- DataError.cs
- PanelStyle.cs
- PartialList.cs
- ParameterModifier.cs
- BamlResourceDeserializer.cs
- DependencyPropertyAttribute.cs
- HitTestWithPointDrawingContextWalker.cs
- DataList.cs
- PolicyImporterElement.cs
- Rotation3DAnimation.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- PenLineJoinValidation.cs
- BinaryWriter.cs
- WebBrowserEvent.cs
- ColumnWidthChangedEvent.cs
- SendDesigner.xaml.cs
- GeneralTransformGroup.cs
- odbcmetadatacolumnnames.cs
- DLinqColumnProvider.cs
- ContainerSelectorGlyph.cs
- DLinqColumnProvider.cs
- XpsFilter.cs
- WeakReference.cs
- SolidBrush.cs
- UiaCoreApi.cs
- SpellerError.cs
- DelegateSerializationHolder.cs
- FormatSettings.cs
- EndpointAddressMessageFilter.cs
- DataTableNewRowEvent.cs
- FieldToken.cs
- ThicknessKeyFrameCollection.cs
- ValueChangedEventManager.cs
- MessageAction.cs
- GridViewUpdatedEventArgs.cs
- WindowsSolidBrush.cs
- PathFigureCollectionValueSerializer.cs
- ForeignConstraint.cs
- Padding.cs
- GradientStopCollection.cs
- FullTrustAssembliesSection.cs
- TimeSpanValidatorAttribute.cs
- XPathItem.cs
- DescendantQuery.cs
- SchemaElementLookUpTable.cs
- Blend.cs
- OdbcCommandBuilder.cs
- RC2CryptoServiceProvider.cs
- SqlConnectionFactory.cs
- GeometryGroup.cs
- EmbeddedMailObject.cs
- TraceContextRecord.cs
- XmlSchemaSubstitutionGroup.cs
- ConvertTextFrag.cs
- CultureInfoConverter.cs
- EventMap.cs
- CompensateDesigner.cs
- PanelStyle.cs
- RelatedEnd.cs
- ViewKeyConstraint.cs
- MultiPropertyDescriptorGridEntry.cs