コード例 #1
0
        private Task createTask(TestPublisher p, ActivityEventArgs.ActivityEnum activity, int waitMillis)
        {
            void action()
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine($"Publish Task: Publisher: {p.Name}, Timestamp: {DateTime.Now.ToString("hh:mm:ss.fff")}");
                    StaticActivityPublisher.Publish(p, activity, new CurrentConn());
                    if (waitMillis == 0)
                    {
                        waitMillis = new Random().Next(10, 200);
                    }
                    Task.Delay(waitMillis);
                }
            }

            return(new Task(action));
        }
コード例 #2
0
        public void TestMultiPublish()
        {
            StaticActivityPublisher.ActivityEvent += (sender, args) =>
            {
                Console.WriteLine($"-> event: Sender: {sender.Name}, Activity: {args.Activity}, Timestamp: {args.TimeStamp.ToString("hh:mm:ss.fff")}");
            };

            StaticActivityPublisher.Subscribe((sender, args) =>
            {
                Console.WriteLine($"-> subscribe: {sender.Name}, {args.Activity},Timestamp: {args.TimeStamp.ToString("hh:mm:ss.fff")}");
            });

            List <Task> tasks = new List <Task>();

            tasks.Add(createTask(new TestPublisher("p1"), ActivityEventArgs.ActivityEnum.Allow, 100));
            tasks.Add(createTask(new TestPublisher("p2"), ActivityEventArgs.ActivityEnum.Block, 199));
            tasks.Add(createTask(new TestPublisher("p3"), ActivityEventArgs.ActivityEnum.Block, 0));
            tasks.ForEach(t =>
            {
                t.Start();
            });
            Task.WaitAll(tasks.ToArray());
        }