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
- CryptoApi.cs
- DataGridCommandEventArgs.cs
- TextParagraphCache.cs
- XmlWellformedWriter.cs
- RuleEngine.cs
- Scanner.cs
- SeekStoryboard.cs
- DataServiceEntityAttribute.cs
- ForwardPositionQuery.cs
- ProxyDataContractResolver.cs
- InstanceStore.cs
- CodeSnippetCompileUnit.cs
- TraceListeners.cs
- BuildManager.cs
- ScrollChrome.cs
- OciLobLocator.cs
- OleDbConnection.cs
- EtwTrace.cs
- SqlDataSourceView.cs
- Convert.cs
- Exception.cs
- InkCanvasSelectionAdorner.cs
- StateMachine.cs
- PackageStore.cs
- RadioButtonList.cs
- XmlCollation.cs
- HeaderCollection.cs
- ThicknessAnimation.cs
- Baml2006KeyRecord.cs
- PropertyValueChangedEvent.cs
- Rotation3DAnimation.cs
- TypeGeneratedEventArgs.cs
- MasterPage.cs
- EntitySetBaseCollection.cs
- SwitchLevelAttribute.cs
- ItemsControl.cs
- IdleTimeoutMonitor.cs
- itemelement.cs
- SpellCheck.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SynchronizationContext.cs
- QilGenerator.cs
- TemplateApplicationHelper.cs
- DbMetaDataCollectionNames.cs
- EncodingDataItem.cs
- errorpatternmatcher.cs
- CodeAttachEventStatement.cs
- Translator.cs
- DataGridViewLayoutData.cs
- SafeMemoryMappedFileHandle.cs
- XmlStringTable.cs
- DataRowChangeEvent.cs
- HitTestResult.cs
- MessageBox.cs
- BindingExpressionUncommonField.cs
- SingleAnimation.cs
- AutomationPeer.cs
- DataBindingCollection.cs
- ImageConverter.cs
- LineInfo.cs
- SystemDiagnosticsSection.cs
- Bold.cs
- PrimaryKeyTypeConverter.cs
- MetadataArtifactLoader.cs
- FormViewPagerRow.cs
- SoapExtensionStream.cs
- QueryContinueDragEvent.cs
- EventMap.cs
- DataBinder.cs
- StringHandle.cs
- ComponentDispatcherThread.cs
- OleDbPermission.cs
- Image.cs
- PackWebRequest.cs
- SQLDecimalStorage.cs
- StringUtil.cs
- WebPartsPersonalizationAuthorization.cs
- SystemIPGlobalProperties.cs
- DoubleAnimation.cs
- LinqTreeNodeEvaluator.cs
- FlowLayoutPanelDesigner.cs
- Convert.cs
- dataprotectionpermission.cs
- CounterCreationDataCollection.cs
- EventLogPermissionHolder.cs
- Component.cs
- XmlMemberMapping.cs
- TraceRecord.cs
- RegisterResponseInfo.cs
- HorizontalAlignConverter.cs
- LogicalChannel.cs
- DataBindingCollectionConverter.cs
- Size3D.cs
- GeneralTransform3DTo2D.cs
- ConnectionProviderAttribute.cs
- Vector3D.cs
- ValueSerializer.cs
- AtomicFile.cs
- ZipIOExtraFieldZip64Element.cs
- ObfuscationAttribute.cs