Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Filters / SynchronizationFilter.cs / 1305376 / SynchronizationFilter.cs
// **************************************************************************** // Copyright (C) 2000-2001 Microsoft Corporation. All rights reserved. // // CONTENTS // Synchronization Interceptor/Filter Executor // // DESCRIPTION // // *************************************************************************** namespace System.Workflow.ComponentModel { using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using System.Workflow.ComponentModel.Design; internal sealed class SynchronizationFilter : ActivityExecutionFilter, IActivityEventListener, IActivityEventListener { public override ActivityExecutionStatus Execute(Activity activity, ActivityExecutionContext executionContext) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (activity == null) throw new ArgumentNullException("activity"); //Make sure first thing we do is hold lock on StatusChange. activity.RegisterForStatusChange(Activity.LockCountOnStatusChangeChangedEvent, this); activity.HoldLockOnStatusChange(this); if (executionContext.AcquireLocks(this)) return ExecuteActivityNow(executionContext); return activity.ExecutionStatus; } private ActivityExecutionStatus ExecuteActivityNow(ActivityExecutionContext context) { return ((ActivityExecutor)NextActivityExecutorInChain(context.Activity)).Execute(context.Activity, context); } #region IActivityEventListener Members public void OnEvent(object sender, ActivityExecutionStatusChangedEventArgs e) { ActivityExecutionContext context = sender as ActivityExecutionContext; if (context.Activity.HasPrimaryClosed && context.Activity.LockCountOnStatusChange == 1) { // release locks and status change locks context.ReleaseLocks(false); context.Activity.UnregisterForStatusChange(Activity.LockCountOnStatusChangeChangedEvent, this); context.Activity.ReleaseLockOnStatusChange(this); } } #endregion #region IActivityEventListener Members public void OnEvent(object sender, EventArgs e) { ActivityExecutionContext context = (ActivityExecutionContext)sender; // only if activity is still executing, then run it if (context.Activity.ExecutionStatus == ActivityExecutionStatus.Executing) { ActivityExecutionStatus newStatus = ExecuteActivityNow(context); if (newStatus == ActivityExecutionStatus.Closed) context.CloseActivity(); } } #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
- XmlWhitespace.cs
- PermissionAttributes.cs
- NamespaceDecl.cs
- StringBuilder.cs
- ReadContentAsBinaryHelper.cs
- ReturnEventArgs.cs
- MarkupWriter.cs
- MonikerSyntaxException.cs
- UpdateManifestForBrowserApplication.cs
- ArraySet.cs
- serverconfig.cs
- _BasicClient.cs
- StreamGeometryContext.cs
- RegexWorker.cs
- ImageBrush.cs
- BCLDebug.cs
- DbSourceParameterCollection.cs
- DeflateEmulationStream.cs
- Stroke2.cs
- WinEventQueueItem.cs
- Guid.cs
- TryCatch.cs
- StackSpiller.Generated.cs
- DeviceContext.cs
- webbrowsersite.cs
- XmlChoiceIdentifierAttribute.cs
- Config.cs
- CompilerGeneratedAttribute.cs
- DirectionalLight.cs
- SafeEventLogReadHandle.cs
- TransportReplyChannelAcceptor.cs
- SrgsElementList.cs
- UIElementParaClient.cs
- CapabilitiesPattern.cs
- XmlNamespaceDeclarationsAttribute.cs
- DiscoveryRequestHandler.cs
- MenuAdapter.cs
- RenderDataDrawingContext.cs
- AlphabeticalEnumConverter.cs
- RoleManagerEventArgs.cs
- shaperfactoryquerycachekey.cs
- MemberRelationshipService.cs
- ZipIOBlockManager.cs
- DocumentReference.cs
- FullTextBreakpoint.cs
- GenericPrincipal.cs
- ContextStaticAttribute.cs
- _SslStream.cs
- ZipPackage.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- EqualityArray.cs
- ByteStreamMessageEncoderFactory.cs
- QilInvoke.cs
- LogicalTreeHelper.cs
- FormattedTextSymbols.cs
- DependencyPropertyKind.cs
- _NegoStream.cs
- ResourcesGenerator.cs
- StaticFileHandler.cs
- Model3DCollection.cs
- SplitContainer.cs
- AttachmentService.cs
- MenuItemStyleCollection.cs
- ZipIOBlockManager.cs
- GreenMethods.cs
- BuildProviderCollection.cs
- ADRole.cs
- ProtocolElement.cs
- WindowsPrincipal.cs
- AccessedThroughPropertyAttribute.cs
- WebBrowserNavigatingEventHandler.cs
- GrammarBuilderBase.cs
- BuildManagerHost.cs
- TreeViewImageGenerator.cs
- WaitHandle.cs
- Size.cs
- Axis.cs
- SqlConnectionPoolProviderInfo.cs
- ProgressBarAutomationPeer.cs
- PageRouteHandler.cs
- EventKeyword.cs
- EditCommandColumn.cs
- SignatureSummaryDialog.cs
- BCryptHashAlgorithm.cs
- RotateTransform3D.cs
- ToolStripItem.cs
- ToolStripScrollButton.cs
- ping.cs
- FileUtil.cs
- ScrollChangedEventArgs.cs
- PaginationProgressEventArgs.cs
- SystemResources.cs
- RoleManagerSection.cs
- OrthographicCamera.cs
- MessageDecoder.cs
- XmlComplianceUtil.cs
- ReadOnlyCollectionBase.cs
- ThreadPool.cs
- SqlException.cs
- ActiveXHelper.cs