static async Task TestChannelReceiver(string connStr) { Console.WriteLine("TestChannel Receiver"); Console.WriteLine("Receiving ..."); Console.WriteLine(); while (true) { using (var conn = new SqlConnection(connStr)) using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { conn.Open(); var received = await ChannelClient.Receive <MyPayload>( conn, "TestChannel", new System.Threading.CancellationTokenSource().Token); if (received != null) { Console.WriteLine("Received: {0}", received); } else { Console.WriteLine("..."); } Console.Write(" Fake Processing Message "); for (var x = 0; x < 5; x++) { await Task.Delay(TimeSpan.FromSeconds(1)); Console.Write("."); } Console.WriteLine(); scope.Complete(); } } }
static async Task TestChannelSender(string connStr) { Console.WriteLine("TestChannel Sender"); Console.WriteLine("Type a message per line to send."); Console.WriteLine(); while (true) { using (var conn = new SqlConnection(connStr)) using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { conn.Open(); var message = Console.ReadLine(); await ChannelClient.Send( conn, "TestChannel", new MyPayload(message)); scope.Complete(); } } }