zoukankan      html  css  js  c++  java
  • C# 实现函数回调

    public class Lib
    {
            public delegate void UserFunctionCB();
            private static UserFunctionCB m_userFnCB;
    
            /// <summary>
            /// 初始化时把需要回调的函数传入
            /// </summary>
            /// <param name="func"></param>
            public static void InitCallbackFunction(UserFunctionCB func)
            {
                m_userFnCB = func;
            }
    
            /// <summary>
            /// 当程序出现异常时会自动触发此函数
            /// (在这里我就不过多的描述异常捕获的过程了)
            /// </summary>
            /// <param name="func"></param>
            public static void HandleExceptionForNDK()
            {
                // 出现异常时调用用户自定义函数
                CallUserFunction();
            }
    
            /// <summary>
            /// 回调执行用户设置的函数
            /// </summary>
            private static void CallUserFunction()
            {
                if (m_userFnCB != null)
                {
                    IAsyncResult result = m_userFnCB.BeginInvoke(delegate(IAsyncResult ar)
                    {
                        m_userFnCB.EndInvoke(ar);
                    }, null);
    
                    // 执行50毫秒后超时
                    result.AsyncWaitHandle.WaitOne(50, true);
                }
            }
    }

    以下是调用部份:

    public class Demo
    {
        void Start()
        {
            var m_callbackFn = new Lib.UserFunctionCB(CallBackFunction);
            Lib.InitCallbackFunction(m_callbackFn);
        }
    
        /// <summary>
        /// 回调函数实现部份
        /// </summary>
        private void CallBackFunction()
        {
             Debug.LogError("print of call back function!");
        }
    }

    以上就是通过委托的方式实现回调操作!由于这个例子是在Unity下使用的,直接把代码抠出来的,直接拷贝是编译不通过的。

    只是写在这里当初一个记事本,避免忘记。

  • 相关阅读:
    Tuesday / Wednesday = Increased Response
    脚本语言
    py2exe
    脚本语言
    访问者模式
    C调用lua脚本的效率测试
    Python编码规范
    py2exe
    Python编码规范
    访问者模式
  • 原文地址:https://www.cnblogs.com/Martin_Q/p/4478494.html
Copyright © 2011-2022 走看看