public class Lib{ public delegate void UserFunctionCB(); private static UserFunctionCB m_userFnCB; ////// 初始化时把需要回调的函数传入 /// /// public static void InitCallbackFunction(UserFunctionCB func) { m_userFnCB = func; } ////// 当程序出现异常时会自动触发此函数 /// (在这里我就不过多的描述异常捕获的过程了) /// /// public static void HandleExceptionForNDK() { // 出现异常时调用用户自定义函数 CallUserFunction(); } ////// 回调执行用户设置的函数 /// 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); } ////// 回调函数实现部份 /// private void CallBackFunction() { Debug.LogError("print of call back function!"); }}
以上就是通过委托的方式实现回调操作!由于这个例子是在Unity下使用的,直接把代码抠出来的,直接拷贝是编译不通过的。
只是写在这里当初一个记事本,避免忘记。