private void CreateTransaction(Activity atomicActivity) { TransactionalProperties properties = new TransactionalProperties(); TransactionOptions options = new TransactionOptions(); WorkflowTransactionOptions transactionOptions = TransactedContextFilter.GetTransactionOptions(atomicActivity); options.IsolationLevel = transactionOptions.IsolationLevel; if (options.IsolationLevel == IsolationLevel.Unspecified) { options.IsolationLevel = IsolationLevel.Serializable; } options.Timeout = transactionOptions.TimeoutDuration; CommittableTransaction transaction = new CommittableTransaction(options); properties.Transaction = transaction; WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, string.Concat(new object[] { "Workflow Runtime: WorkflowExecutor: instanceId: ", this.InstanceIdString, " .Created enlistable transaction ", transaction.GetHashCode(), " with timeout ", options.Timeout, ", isolation ", options.IsolationLevel })); properties.LocalQueuingService = new WorkflowQueuingService(this.qService); atomicActivity.SetValue(TransactionalPropertiesProperty, properties); this.currentAtomicActivity = atomicActivity; this.atomicActivityEvent = new ManualResetEvent(false); WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "Workflow Runtime: WorkflowExecutor: instanceId: " + this.InstanceIdString + " .Set CurrentAtomicActivity to " + atomicActivity.Name); }