• 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;
        }
    
  • 相关阅读:
    linux之vim编辑器
    linux之bash shell
    liunx系统部署
    安卓ImageButton圆角按钮设置
    C语言中.h和.c文件解析(转载)
    搭建svn服务器&服务器客户端使用笔记
    git服务器创建,冲突解决,远程仓库获取指定文件
    win32 htmlayout dom操作demo
    win32 htmlayout点击按钮创建新窗口,以及按钮图片样式
    win32最简单的htmlayout图形界面demo
  • 原文地址:https://www.cnblogs.com/yinchh/p/10498753.html
Copyright © 2020-2023  润新知