AddEvent() public method

添加到事件队列
public AddEvent ( ThreadEvent, ev, Action func ) : void
ev ThreadEvent,
func Action
return void
    private static int AddEvent(IntPtr L)
    {
        int result;

        try
        {
            ToLua.CheckArgsCount(L, 3);
            ThreadManager     threadManager = (ThreadManager)ToLua.CheckObject(L, 1, typeof(ThreadManager));
            ThreadEvent       ev            = (ThreadEvent)ToLua.CheckObject(L, 2, typeof(ThreadEvent));
            LuaTypes          luaTypes      = LuaDLL.lua_type(L, 3);
            Action <NotiData> func;
            if (luaTypes != LuaTypes.LUA_TFUNCTION)
            {
                func = (Action <NotiData>)ToLua.CheckObject(L, 3, typeof(Action <NotiData>));
            }
            else
            {
                LuaFunction func2 = ToLua.ToLuaFunction(L, 3);
                func = (DelegateFactory.CreateDelegate(typeof(Action <NotiData>), func2) as Action <NotiData>);
            }
            threadManager.AddEvent(ev, func);
            result = 0;
        }
        catch (Exception e)
        {
            result = LuaDLL.toluaL_exception(L, e, null);
        }
        return(result);
    }
示例#2
0
    static int AddEvent(IntPtr L)
    {
        try
        {
            ToLua.CheckArgsCount(L, 3);
            ThreadManager            obj  = (ThreadManager)ToLua.CheckObject(L, 1, typeof(ThreadManager));
            ThreadEvent              arg0 = (ThreadEvent)ToLua.CheckObject(L, 2, typeof(ThreadEvent));
            System.Action <NotiData> arg1 = null;
            LuaTypes funcType3            = LuaDLL.lua_type(L, 3);

            if (funcType3 != LuaTypes.LUA_TFUNCTION)
            {
                arg1 = (System.Action <NotiData>)ToLua.CheckObject(L, 3, typeof(System.Action <NotiData>));
            }
            else
            {
                LuaFunction func = ToLua.ToLuaFunction(L, 3);
                arg1 = DelegateFactory.CreateDelegate(typeof(System.Action <NotiData>), func) as System.Action <NotiData>;
            }

            obj.AddEvent(arg0, arg1);
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
示例#3
0
    /// <summary>
    /// 线程下载
    /// </summary>
    void BeginDownload(string url, string file)
    {     //线程下载
        object[] param = new object[2] {
            url, file
        };

        ThreadEvent ev = new ThreadEvent();

        ev.Key = NotiConst.UPDATE_DOWNLOAD;
        ev.evParams.AddRange(param);
        ThreadManager.AddEvent(ev, OnThreadCompleted);   //线程下载
    }
示例#4
0
    private IEnumerator ExtractZipFile()
    {
        bool   bNeedUnzip = false;
        string version    = PlayerPrefs.GetString("Version");

        if (version != AppConst.AppVersion)
        {
            bNeedUnzip = true;
        }
        if (bNeedUnzip == false)
        {
            Finish();
            yield break;
        }

        string path = AppConst.ABZipPath;

        LogUtil.StartLog("Extract Zip File: " + path);
        UpdateTips("正在解压文件");
        byte[] bytes = null;
        if (path.Contains("://"))
        {
            UnityWebRequest request = UnityWebRequest.Get(path);
            yield return(request.SendWebRequest());

            if (request.isNetworkError || request.isHttpError)
            {
                LogUtil.StartLog("Failed To Load ab.zip File: " + path + "\n" + request.error);
            }
            else
            {
                bytes = request.downloadHandler.data;
            }
        }
        else if (File.Exists(path))
        {
            bytes = File.ReadAllBytes(path);
        }

        if (bytes != null)
        {
            object[]    param = new object[] { bytes, AppConst.CachePath };
            ThreadEvent ev    = new ThreadEvent();
            ev.Key = NotiConst.EXTRACT_FILE;
            ev.evParams.AddRange(param);

            float         progress      = 0f;
            bool          isFinish      = false;
            ThreadManager threadManager = MainGame.GetManager <ThreadManager>();
            threadManager.AddEvent(ev, (e) =>
            {
                if (e.evName == NotiConst.EXTRACT_UPDATE)
                {
                    progress = (float)e.evParam;
                }
                else if (e.evName == NotiConst.EXTRACT_FINISH)
                {
                    isFinish = true;
                }
            });   //线程解压

            while (!isFinish)
            {
                UpdateTips("正在解压文件", progress);
                yield return(new WaitForEndOfFrame());
            }
            PlayerPrefs.SetString("Version", AppConst.AppVersion);
            Util.Log("Extract Zip File Finish.");
            UpdateTips("解压文件完成", 1);
        }
        else
        {
            Util.Log("Zip File Is Not Found.");
            UpdateTips("解压文件失败");
        }
    }