コード例 #1
0
            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();
                }
            }
コード例 #2
0
        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);
        }
コード例 #3
0
            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);
                }
            }
コード例 #4
0
            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;
                }
            }
コード例 #5
0
ファイル: Program.cs プロジェクト: Angeldude/sodium
            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;
                }
            }
コード例 #6
0
            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);
                }
            }
コード例 #7
0
ファイル: Program.cs プロジェクト: Angeldude/sodium
            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);
                }
            }
コード例 #8
0
ファイル: Program.cs プロジェクト: Angeldude/sodium
            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);
                }
            }
コード例 #9
0
ファイル: Program.cs プロジェクト: Angeldude/sodium
            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();
                }
            }