Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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(false);
}
}
}
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;
}
_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;
}
[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;
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigurationStrings.cs
- SiteMapSection.cs
- ParallelEnumerableWrapper.cs
- CodeArrayIndexerExpression.cs
- dataprotectionpermissionattribute.cs
- ReadContentAsBinaryHelper.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- FlowLayout.cs
- FixedSOMTextRun.cs
- DataGridColumnEventArgs.cs
- embossbitmapeffect.cs
- TransformerInfoCollection.cs
- ArrayList.cs
- TypeDescriptor.cs
- MarkupObject.cs
- DataGridViewTextBoxCell.cs
- ACL.cs
- SqlLiftIndependentRowExpressions.cs
- PersonalizablePropertyEntry.cs
- PageThemeBuildProvider.cs
- ScriptHandlerFactory.cs
- CodeDomLoader.cs
- Header.cs
- IsolatedStorage.cs
- HandleCollector.cs
- SiblingIterators.cs
- XPathScanner.cs
- FileSystemEventArgs.cs
- QueryCacheKey.cs
- Path.cs
- SHA512Managed.cs
- MachineKey.cs
- DataContext.cs
- FontSourceCollection.cs
- HttpServerProtocol.cs
- DWriteFactory.cs
- OutputCacheModule.cs
- ReversePositionQuery.cs
- XmlSchemaAnyAttribute.cs
- HttpAsyncResult.cs
- RowParagraph.cs
- DictionaryBase.cs
- AbstractDataSvcMapFileLoader.cs
- SQLInt32Storage.cs
- EntityCollection.cs
- DataControlFieldsEditor.cs
- XmlException.cs
- _SingleItemRequestCache.cs
- DoubleStorage.cs
- DesignBindingPicker.cs
- Error.cs
- WindowsListViewItemCheckBox.cs
- XmlUtil.cs
- ClientUrlResolverWrapper.cs
- ImportCatalogPart.cs
- UInt16Storage.cs
- x509store.cs
- ValidationHelper.cs
- WebPartCatalogCloseVerb.cs
- smtpconnection.cs
- SoapClientProtocol.cs
- DesigntimeLicenseContextSerializer.cs
- WindowsFormsHost.cs
- TrustLevelCollection.cs
- ColorMatrix.cs
- HealthMonitoringSectionHelper.cs
- TrustLevel.cs
- RoleGroup.cs
- DataColumnPropertyDescriptor.cs
- SchemaCollectionCompiler.cs
- ExecutedRoutedEventArgs.cs
- ConfigurationPermission.cs
- HtmlControlPersistable.cs
- TextSelectionHighlightLayer.cs
- SecurityResources.cs
- ValueSerializer.cs
- AspCompat.cs
- Compiler.cs
- ImageDrawing.cs
- UpdatePanelControlTrigger.cs
- UTF7Encoding.cs
- FixedFindEngine.cs
- XPathMessageFilterElementCollection.cs
- SafeWaitHandle.cs
- LineServicesCallbacks.cs
- LogLogRecord.cs
- XamlTemplateSerializer.cs
- TableCellCollection.cs
- StringFunctions.cs
- ConnectionPointConverter.cs
- FormViewDeletedEventArgs.cs
- ItemCheckEvent.cs
- EpmSourceTree.cs
- ErrorRuntimeConfig.cs
- PartialTrustVisibleAssemblyCollection.cs
- SystemInfo.cs
- ControlType.cs
- WebEvents.cs
- DataTableExtensions.cs
- ThicknessAnimationBase.cs