首页 > Windows开发 > 详细

C# 向类中添加回调和事件

时间:2021-08-30 12:10:44      阅读:17      评论:0      收藏:0      [点我收藏+]
class ClassA
    {
        public event Action eventTest;
        public void fun1(int a,int b)
        {
            Console.WriteLine("fun1 start");
            Console.WriteLine("a+b=" + (a + b).ToString());
            Console.WriteLine("fun1 sleep start");

            eventTest?.Invoke();
          //  Thread.Sleep(1000);
            Console.WriteLine("fun1 sleep stop");

           // return true;
        }
    }


class ClassB
    {
        public delegate void dlg(int num1, int num2);
        public void fun(int a, int b,dlg fa)
        {
            Console.WriteLine("classB start");
            fa(a, b);
            Console.WriteLine("classB stop");
        }
    }



//**main form 按钮
private void button18_Click(object sender, EventArgs e)
        {
            ClassA A = new ClassA();
            ClassB B = new ClassB();
            A.eventTest += () =>
            {
                Console.WriteLine("eventTest start");
                Console.WriteLine("eventTest sleep start");
                Thread.Sleep(1000);
                Console.WriteLine("eventTest sleep end");
            };

            Console.WriteLine("mainform start");
            B.fun(2, 3, A.fun1);
            Console.WriteLine("mainform stop");
        }

此例的回调和事件的触发顺序相当于单线程下的运行顺序

 

输出结果:

mainform start
classB start
fun1 start
a+b=5
fun1 sleep start
eventTest start
eventTest sleep start
eventTest sleep end
fun1 sleep stop
classB stop
mainform stop

 

C# 向类中添加回调和事件

原文:https://www.cnblogs.com/zzz666/p/15195452.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!