static void Main(string[] args) { using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { // Add ChannelManager ChannelManagerService channelmgr = new ChannelManagerService(); workflowRuntime.AddService(channelmgr); AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { Console.WriteLine("WorkflowCompleted: " + e.WorkflowInstance.InstanceId.ToString()); waitHandle.Set(); }; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine("WorkflowTerminated: " + e.Exception.Message); waitHandle.Set(); }; while (true) { WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(Microsoft.WorkflowServices.Samples.SequentialCalculatorClient)); Console.WriteLine("Start SequentialCalculatorClient."); instance.Start(); waitHandle.WaitOne(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Do another calculation? (Y)"); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Press <enter> to exit."); Console.ResetColor(); string input = Console.ReadLine(); if (input.Length == 0 || input[0] != 'Y') break; waitHandle.Reset(); } } }
internal static ChannelTicket Take(ActivityExecutionContext executionContext, Guid workflowId, LogicalChannel logicalChannel) { if (executionContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("executionContext"); } if (workflowId == Guid.Empty) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("workflowId", SR2.GetString(SR2.Error_Cache_InvalidWorkflowId)); } if (logicalChannel == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("logicalChannel"); } ChannelManagerService channelManager = executionContext.GetService <ChannelManagerService>(); ChannelTicket channel; if (channelManager != null) { channel = channelManager.TakeChannel(workflowId, logicalChannel); } else { channel = ChannelManagerService.CreateTransientChannel(logicalChannel); } return(channel); }
public PooledChannelTicket(ChannelManagerService service, ChannelManager.PooledChannel channel, ChannelPoolKey channelPoolKey, Guid workflowId, Guid logicalChannelId) : base() { this.service = service; this.channel = channel; this.channelPoolKey = channelPoolKey; this.workflowId = workflowId; this.logicalChannelId = logicalChannelId; }