Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities.DurableInstancing / System / Activities / DurableInstancing / InstanceLockTracking.cs / 1305376 / InstanceLockTracking.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.DurableInstancing { using System.Runtime.DurableInstancing; using System.Transactions; sealed class InstanceLockTracking { object synchLock; SqlWorkflowInstanceStore store; public InstanceLockTracking(SqlWorkflowInstanceStore store) { this.InstanceId = Guid.Empty; this.store = store; this.synchLock = new object(); } public Guid InstanceId { get; set; } public bool BoundToLock { get; set; } public long InstanceVersion { get; set; } public bool IsHandleFreed { get; set; } public bool IsSafeToUnlock { get; set; } public void HandleFreed() { lock (this.synchLock) { if (this.BoundToLock && this.IsSafeToUnlock) { this.store.GenerateUnlockCommand(this); } this.IsHandleFreed = true; } } public void TrackStoreLock(Guid instanceId, long instanceVersion, DependentTransaction dependentTransaction) { this.BoundToLock = true; this.InstanceId = instanceId; this.InstanceVersion = instanceVersion; if (dependentTransaction != null) { dependentTransaction.TransactionCompleted += new TransactionCompletedEventHandler(TransactionCompleted); } else { this.IsSafeToUnlock = true; } } public void TrackStoreUnlock(DependentTransaction dependentTransaction) { this.BoundToLock = false; this.IsHandleFreed = true; if (dependentTransaction != null) { dependentTransaction.TransactionCompleted += new TransactionCompletedEventHandler(TransactedUnlockCompleted); } } void TransactionCompleted(object sender, TransactionEventArgs e) { lock (this.synchLock) { if (e.Transaction.TransactionInformation.Status == TransactionStatus.Committed) { if (this.IsHandleFreed) { this.store.GenerateUnlockCommand(this); } else { this.IsSafeToUnlock = true; } } else { this.BoundToLock = false; } } } void TransactedUnlockCompleted(object sender, TransactionEventArgs e) { lock (this.synchLock) { if (e.Transaction.TransactionInformation.Status != TransactionStatus.Committed && this.IsSafeToUnlock) { this.store.GenerateUnlockCommand(this); } } } } } // 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
- HttpResponseHeader.cs
- Utils.cs
- CfgRule.cs
- TraceHwndHost.cs
- SRef.cs
- ListViewItem.cs
- SelectionRange.cs
- AttachedAnnotationChangedEventArgs.cs
- CustomError.cs
- InputReferenceExpression.cs
- DynamicILGenerator.cs
- SafeProcessHandle.cs
- RequestQueue.cs
- Compress.cs
- ThreadInterruptedException.cs
- DefaultExpression.cs
- MimeTypeMapper.cs
- DataGridViewLayoutData.cs
- RankException.cs
- CategoryNameCollection.cs
- EventWaitHandleSecurity.cs
- _ConnectionGroup.cs
- CardSpaceException.cs
- TabControlToolboxItem.cs
- ToolbarAUtomationPeer.cs
- JoinTreeNode.cs
- userdatakeys.cs
- SessionStateModule.cs
- CachedPathData.cs
- QueryContinueDragEventArgs.cs
- ConditionChanges.cs
- FileUpload.cs
- ResourcePart.cs
- BindableTemplateBuilder.cs
- OrderedHashRepartitionEnumerator.cs
- TokenCreationException.cs
- Point3DCollection.cs
- BindingNavigatorDesigner.cs
- MenuEventArgs.cs
- EqualityComparer.cs
- PaginationProgressEventArgs.cs
- KnownTypes.cs
- FileLevelControlBuilderAttribute.cs
- MethodAccessException.cs
- GeneratedContractType.cs
- ApplicationInfo.cs
- TypeUtils.cs
- TextEditorParagraphs.cs
- StylusPlugInCollection.cs
- EntityWrapperFactory.cs
- TextLine.cs
- DataGridTable.cs
- ExpressionLink.cs
- Errors.cs
- LinqToSqlWrapper.cs
- CodeTypeReferenceExpression.cs
- AccessDataSourceWizardForm.cs
- ObjectDataSourceFilteringEventArgs.cs
- SerializableAttribute.cs
- FixUp.cs
- Function.cs
- EventsTab.cs
- ClassData.cs
- ToolZone.cs
- TextComposition.cs
- ReadOnlyTernaryTree.cs
- DoubleCollectionConverter.cs
- HtmlEmptyTagControlBuilder.cs
- SerializableAuthorizationContext.cs
- MissingMemberException.cs
- SynchronizedInputHelper.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- cookiecollection.cs
- KnownBoxes.cs
- MD5Cng.cs
- PageScaling.cs
- UseLicense.cs
- DeviceContext.cs
- HostingPreferredMapPath.cs
- ResourcePool.cs
- ObjectDataSourceView.cs
- ArgumentNullException.cs
- UIPropertyMetadata.cs
- CodeDomDecompiler.cs
- DetailsViewInsertedEventArgs.cs
- StorageComplexPropertyMapping.cs
- SoapExtensionReflector.cs
- ServiceModelEnumValidatorAttribute.cs
- TriState.cs
- XmlSchemaChoice.cs
- x509store.cs
- ImmutableObjectAttribute.cs
- RelationshipEnd.cs
- CacheHelper.cs
- ThreadAttributes.cs
- NavigationWindow.cs
- XmlComment.cs
- WebPartZone.cs
- AssociationTypeEmitter.cs
- BookmarkOptionsHelper.cs