阅读 74

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

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

 

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

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐