Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / DebugEngine / IInstanceTable.cs / 1305376 / IInstanceTable.cs
// Copyright (c) Microsoft Corp., 2004. All rights reserved.
#region Using directives
using System;
using System.Workflow.Runtime;
using System.Collections.Generic;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
#endregion
namespace System.Workflow.Runtime.DebugEngine
{
//
// IMPORTANT: Do not edit this file without consulting Break Safe Synchronization.doc!
//
#region interface IInstanceTable
public interface IInstanceTable
{
Activity GetActivity(string instanceId, string activityName);
}
#endregion
#region Class InstanceData
internal sealed class InstanceData: ICloneable
{
Activity rootActivity;
public Activity RootActivity
{
get
{
return this.rootActivity;
}
set
{
this.rootActivity = value;
}
}
public InstanceData(Activity rootActivity)
{
this.rootActivity = rootActivity;
}
object ICloneable.Clone()
{
InstanceData instanceData = new InstanceData(this.rootActivity);
return instanceData;
}
}
internal sealed class InstanceMap : Dictionary, ICloneable
{
object ICloneable.Clone()
{
InstanceMap data = new InstanceMap();
foreach (Guid instsanceId in Keys)
data.Add(instsanceId, (InstanceData) (((ICloneable)(this[instsanceId])).Clone()));
return data;
}
}
#endregion
#region Class InstanceTable
internal sealed class InstanceTable : BreakSafeBase, IInstanceTable
{
public InstanceTable(int controllerManagedThreadId): base(controllerManagedThreadId)
{ }
// Controller invoked.
public void AddInstance(Guid instanceId, Activity rootActivity)
{
try
{
Lock();
InstanceMap instanceMap = GetWriterData();
instanceMap[instanceId] = new InstanceData(rootActivity);
SaveData(instanceMap);
}
finally
{
Unlock();
}
}
// Controller invoked.
public void RemoveInstance(Guid instanceId)
{
try
{
Lock();
InstanceMap instanceMap = GetWriterData();
instanceMap.Remove(instanceId);
SaveData(instanceMap);
}
finally
{
Unlock();
}
}
// Controller invoked during Dynamic Update notification subscription changes.
public Activity GetRootActivity(Guid instanceId)
{
try
{
Lock();
return GetReaderData()[instanceId].RootActivity;
}
finally
{
Unlock();
}
}
// Controller invoked during Dynamic Update notification subscription changes.
public void UpdateRootActivity(Guid instanceId, Activity rootActivity)
{
try
{
Lock();
InstanceMap instanceMap = GetWriterData();
instanceMap[instanceId].RootActivity = rootActivity;
SaveData(instanceMap);
}
finally
{
Unlock();
}
}
// DE invoked for watches through expression evaluation.
Activity IInstanceTable.GetActivity(string instanceId, string activityQualifiedName)
{
try
{
Lock();
Activity rootActivity = GetReaderData()[new Guid(instanceId)].RootActivity;
return DebuggerHelpers.ParseActivity(rootActivity, activityQualifiedName);
}
finally
{
Unlock();
}
}
}
#endregion
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeMemberField.cs
- CodeValidator.cs
- CacheEntry.cs
- ContainsRowNumberChecker.cs
- CurrentChangingEventManager.cs
- MatrixCamera.cs
- InvalidFilterCriteriaException.cs
- Opcode.cs
- EnumerableCollectionView.cs
- AuthenticationModuleElementCollection.cs
- DbConnectionPoolGroupProviderInfo.cs
- ErrorReporting.cs
- FieldToken.cs
- MimePart.cs
- ReflectionTypeLoadException.cs
- MenuItemBinding.cs
- FontFamilyIdentifier.cs
- SystemUnicastIPAddressInformation.cs
- NegotiateStream.cs
- SupportsEventValidationAttribute.cs
- LinkConverter.cs
- RepeaterCommandEventArgs.cs
- KeyValueSerializer.cs
- ArrayWithOffset.cs
- ImplicitInputBrush.cs
- SelectionProviderWrapper.cs
- TextTreeDeleteContentUndoUnit.cs
- GeometryConverter.cs
- EventMappingSettings.cs
- VarInfo.cs
- DataReceivedEventArgs.cs
- ConfigViewGenerator.cs
- ButtonBase.cs
- DataServiceHostWrapper.cs
- ProfileSettings.cs
- CqlParser.cs
- QilXmlWriter.cs
- TableLayoutStyle.cs
- Int32EqualityComparer.cs
- ClientUtils.cs
- BindingList.cs
- PointAnimationUsingPath.cs
- LogPolicy.cs
- nulltextcontainer.cs
- SqlDataAdapter.cs
- IdentityHolder.cs
- RectAnimationClockResource.cs
- HeaderedItemsControl.cs
- MemberDescriptor.cs
- DisposableCollectionWrapper.cs
- PaintEvent.cs
- GeneratedCodeAttribute.cs
- DbUpdateCommandTree.cs
- WsiProfilesElement.cs
- WebPageTraceListener.cs
- ManualResetEvent.cs
- AbstractExpressions.cs
- TextServicesHost.cs
- RoleManagerSection.cs
- ImageBrush.cs
- _ConnectStream.cs
- XmlTextEncoder.cs
- DeflateInput.cs
- ReadOnlyDataSource.cs
- DataGridPageChangedEventArgs.cs
- PropertyPushdownHelper.cs
- LayoutExceptionEventArgs.cs
- StrokeCollection2.cs
- BufferedStream2.cs
- SqlRewriteScalarSubqueries.cs
- RepeaterItem.cs
- TypeLibConverter.cs
- NamedElement.cs
- ImageButton.cs
- IDataContractSurrogate.cs
- SerialErrors.cs
- VirtualDirectoryMapping.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- MemoryPressure.cs
- XmlDocumentSchema.cs
- DynamicMethod.cs
- UIElement.cs
- CodeAccessPermission.cs
- Point3DAnimationBase.cs
- GeneralTransform3DTo2D.cs
- ActiveXSite.cs
- ToolStripItemImageRenderEventArgs.cs
- XmlSchema.cs
- RectAnimationUsingKeyFrames.cs
- Wrapper.cs
- InternalEnumValidatorAttribute.cs
- InstalledFontCollection.cs
- GridView.cs
- MultiDataTrigger.cs
- BitmapEffectDrawingContextWalker.cs
- ParallelEnumerable.cs
- ProcessThreadDesigner.cs
- DecoderBestFitFallback.cs
- HashHelper.cs
- TraceListener.cs