public async Task Run() { Console.WriteLine("*** Simple test"); { StreamSink <string> sa = new StreamSink <string>(); StreamSink <string> sb = new StreamSink <string>(); Task <string> ta = sa.ListenOnce(); Task <string> tb = sb.ListenOnce(); Func <Task <string> > t = async() => await ta + " " + await tb; sa.Send("Hello"); Func <Task> task = () => t().ContinueWith(t1 => Console.WriteLine(t1.Result), TaskContinuationOptions.ExecuteSynchronously); sb.Send("World"); await task(); } Console.WriteLine(); Console.WriteLine("*** Simultaneous case"); { StreamSink <string> sa = new StreamSink <string>(); StreamSink <string> sb = new StreamSink <string>(); Task <string> ta = sa.ListenOnce(); Task <string> tb = sb.ListenOnce(); Func <Task <string> > t = async() => await ta + " " + await tb; Func <Task> task = () => t().ContinueWith(t1 => Console.WriteLine(t1.Result), TaskContinuationOptions.ExecuteSynchronously); Transaction.RunVoid(() => { sa.Send("Hello"); sb.Send("World"); }); await task(); } }
public void TestListenOnce() { StreamSink <char> s = Stream.CreateSink <char>(); List <char> @out = new List <char>(); IListener l = s.ListenOnce(@out.Add); s.Send('A'); s.Send('B'); s.Send('C'); l.Unlisten(); CollectionAssert.AreEqual(new[] { 'A' }, @out); }
public async Task Run() { Console.WriteLine("*** test"); { StreamSink <string> s1 = new StreamSink <string>(); Task <string> t1 = s1.ListenOnce(); new Thread(() => { s1.Send("Sent"); }).Start(); Console.WriteLine(await t1); } }
public async Task Run() { Console.WriteLine("*** test 1"); { StreamSink <string> s1 = new StreamSink <string>(); Task <string> t1 = s1.ListenOnce(); s1.Send("Early"); Console.WriteLine(await t1); } Console.WriteLine(); Console.WriteLine("*** test 2"); { StreamSink <string> s1 = new StreamSink <string>(); Task t1 = s1.ListenOnce().ContinueWith(t => Console.WriteLine(t.Result), TaskContinuationOptions.ExecuteSynchronously); s1.Send("Late"); await t1; } }
public async Task Run() { Console.WriteLine("*** test 1"); { StreamSink<string> s1 = new StreamSink<string>(); Task<string> t1 = s1.ListenOnce(); s1.Send("Early"); Console.WriteLine(await t1); } Console.WriteLine(); Console.WriteLine("*** test 2"); { StreamSink<string> s1 = new StreamSink<string>(); Task t1 = s1.ListenOnce().ContinueWith(t => Console.WriteLine(t.Result), TaskContinuationOptions.ExecuteSynchronously); s1.Send("Late"); await t1; } }
public async Task Run() { Console.WriteLine("*** Simple test"); { StreamSink <string> sa = new StreamSink <string>(); StreamSink <string> sb = new StreamSink <string>(); Task <string> ta = sa.ListenOnce(); Task <string> tb = sb.ListenOnce(); new Thread(() => { sa.Send("Hello"); sb.Send("World"); }).Start(); Console.WriteLine(await ta + " " + await tb); } Console.WriteLine(); Console.WriteLine("*** Simultaneous case"); { StreamSink <string> sa = new StreamSink <string>(); StreamSink <string> sb = new StreamSink <string>(); Task <string> ta = sa.ListenOnce(); Task <string> tb = sb.ListenOnce(); new Thread(() => { Transaction.RunVoid(() => { sa.Send("Hello"); sb.Send("World"); }); }).Start(); Console.WriteLine(await ta + " " + await tb); } }
public async Task Run() { Console.WriteLine("*** test"); { StreamSink<string> s1 = new StreamSink<string>(); Task<string> t1 = s1.ListenOnce(); new Thread(() => { s1.Send("Sent"); }).Start(); Console.WriteLine(await t1); } }
public async Task Run() { Console.WriteLine("*** Simple test"); { StreamSink<string> sa = new StreamSink<string>(); StreamSink<string> sb = new StreamSink<string>(); Task<string> ta = sa.ListenOnce(); Task<string> tb = sb.ListenOnce(); new Thread(() => { sa.Send("Hello"); sb.Send("World"); }).Start(); Console.WriteLine(await ta + " " + await tb); } Console.WriteLine(); Console.WriteLine("*** Simultaneous case"); { StreamSink<string> sa = new StreamSink<string>(); StreamSink<string> sb = new StreamSink<string>(); Task<string> ta = sa.ListenOnce(); Task<string> tb = sb.ListenOnce(); new Thread(() => { Transaction.RunVoid(() => { sa.Send("Hello"); sb.Send("World"); }); }).Start(); Console.WriteLine(await ta + " " + await tb); } }
public async Task Run() { Console.WriteLine("*** Simple test"); { StreamSink<string> sa = new StreamSink<string>(); StreamSink<string> sb = new StreamSink<string>(); Task<string> ta = sa.ListenOnce(); Task<string> tb = sb.ListenOnce(); Func<Task<string>> t = async () => await ta + " " + await tb; sa.Send("Hello"); Func<Task> task = () => t().ContinueWith(t1 => Console.WriteLine(t1.Result), TaskContinuationOptions.ExecuteSynchronously); sb.Send("World"); await task(); } Console.WriteLine(); Console.WriteLine("*** Simultaneous case"); { StreamSink<string> sa = new StreamSink<string>(); StreamSink<string> sb = new StreamSink<string>(); Task<string> ta = sa.ListenOnce(); Task<string> tb = sb.ListenOnce(); Func<Task<string>> t = async () => await ta + " " + await tb; Func<Task> task = () => t().ContinueWith(t1 => Console.WriteLine(t1.Result), TaskContinuationOptions.ExecuteSynchronously); Transaction.RunVoid(() => { sa.Send("Hello"); sb.Send("World"); }); await task(); } }