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
- Pkcs7Signer.cs
- XsdDateTime.cs
- LicenseProviderAttribute.cs
- DefaultPrintController.cs
- StartUpEventArgs.cs
- DataError.cs
- SchemaCollectionPreprocessor.cs
- CreateUserWizardAutoFormat.cs
- ProxyAssemblyNotLoadedException.cs
- NonBatchDirectoryCompiler.cs
- WSSecurityXXX2005.cs
- BinaryMethodMessage.cs
- ColorTranslator.cs
- SmtpDigestAuthenticationModule.cs
- TimeoutException.cs
- COM2Properties.cs
- SwitchAttribute.cs
- Rotation3DAnimationBase.cs
- _AutoWebProxyScriptHelper.cs
- AdjustableArrowCap.cs
- XmlFileEditor.cs
- DispatchWrapper.cs
- CachedTypeface.cs
- SapiRecoContext.cs
- PassportPrincipal.cs
- GridItem.cs
- Point3D.cs
- PerformanceCounterPermissionEntry.cs
- _PooledStream.cs
- _ConnectStream.cs
- ClientRequest.cs
- Point4D.cs
- AlternateViewCollection.cs
- BuilderElements.cs
- ToolStripSplitStackLayout.cs
- GregorianCalendarHelper.cs
- DesignerSerializerAttribute.cs
- UrlMappingsModule.cs
- RepeaterCommandEventArgs.cs
- NavigationProperty.cs
- FixedSOMFixedBlock.cs
- AttributeTable.cs
- MetabaseServerConfig.cs
- SkinBuilder.cs
- ButtonChrome.cs
- SmtpReplyReaderFactory.cs
- FileFormatException.cs
- ToolStripSplitStackLayout.cs
- ComponentRenameEvent.cs
- WsdlInspector.cs
- ListenerServiceInstallComponent.cs
- XmlNamespaceMapping.cs
- ListViewItemSelectionChangedEvent.cs
- DocumentsTrace.cs
- WebPartMenuStyle.cs
- ParameterToken.cs
- ErrorHandler.cs
- Point3DAnimationBase.cs
- DataSet.cs
- WorkflowRuntimeElement.cs
- KnownBoxes.cs
- ConfigurationManagerHelper.cs
- PeerName.cs
- ConfigXmlComment.cs
- XmlException.cs
- DocumentViewerConstants.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- BackgroundWorker.cs
- ButtonField.cs
- Sql8ExpressionRewriter.cs
- ProxyAttribute.cs
- FileUtil.cs
- __ComObject.cs
- ProviderUtil.cs
- XPathParser.cs
- FastPropertyAccessor.cs
- FullTextLine.cs
- UserControl.cs
- WebService.cs
- CellIdBoolean.cs
- configsystem.cs
- ScheduleChanges.cs
- InstanceContext.cs
- SmtpNtlmAuthenticationModule.cs
- WindowsRebar.cs
- LongTypeConverter.cs
- KeyValuePair.cs
- DbDeleteCommandTree.cs
- TextWriterEngine.cs
- SafeNativeMethodsCLR.cs
- PerfCounterSection.cs
- SafeNativeMethodsOther.cs
- ProcessThreadCollection.cs
- MetadataArtifactLoaderComposite.cs
- HtmlInputPassword.cs
- ImageInfo.cs
- ExtensionQuery.cs
- Int32RectValueSerializer.cs
- Vector3DAnimation.cs
- Timeline.cs