zoukankan      html  css  js  c++  java
  • C#方法回调

    通过接口

        class Program
        {
            static void Main1(string[] args)
            {
                var controller = new Controller(new CallBack());
                controller.Execute();
            }
        }
    
        public interface ICallBack
        {
            void Run();
        }
        public class CallBack : ICallBack
        {
            public void Run()
            {
                Console.WriteLine(DateTime.Now);
            }
        }
        public class Controller
        {
            private ICallBack _callBack;
            public Controller(ICallBack callBack)
            {
                this._callBack = callBack;
            }
            public void Execute()
            {
                Console.WriteLine("点击任何键返回当前时间,ESC退出");
                while (Console.ReadKey(true).Key != ConsoleKey.Escape)
                {
                    _callBack.Run();
                }
            }
        }
    

    通过委托

        public class DelegateCallback
        {
            static void Main(string[] args)
            {
                var controller = new Controller(new Action(() => Console.WriteLine(DateTime.Now)));
                //controller.AddEvent(() => Console.WriteLine(DateTime.Today));
                controller.Execute();
            }
        }
        public class Controller
        {
            private Action _showTime;
            public Controller(Action showTime)
            {
                this._showTime += showTime;
            }
            public void AddEvent(Action act)
            {
                this._showTime += act;
            }
            public void Execute()
            {
                Console.WriteLine("点击任何键返回当前时间,ESC退出");
                while (Console.ReadKey(true).Key != ConsoleKey.Escape)
                {
                    _showTime();
                }
            }
        }
    

    定时回调

        public class TimeCallback
        {
            static void Main(string[] args)
            {
                var ti = new TaskInfo();
                var tm = new Timer(state =>
                {
                    TaskInfo info = state as TaskInfo;
                    info.count++;
                    Console.WriteLine(info.count);
                }, ti, 0, 1000);
                Console.ReadKey();
            }
        }
        public class TaskInfo
        {
            public int count = 0;
        }
    
  • 相关阅读:
    网络通信之 字节序转换原理与网络字节序、大端和小端模式
    [C/C++]大小端字节序转换程序
    面向对象和面向过程的区别
    编译libjpeg
    地形系统lod
    c/c++ 代码中使用sse指令集加速
    个人作品- 蘑菇大战
    个人作品- 几何战争
    Obj格式模型 读取
    各大引擎矩阵的矩阵存储方式 ----行矩阵 or 列矩阵
  • 原文地址:https://www.cnblogs.com/yinchh/p/10498753.html
Copyright © 2011-2022 走看看