/// <summary>
    /// 添加延迟执行按照帧数 call, delayframes, mn and isUnique.
    /// </summary>
    /// <param name='call'>
    /// 方法.
    /// </param>
    /// <param name='delayframes'>
    /// 延迟帧数.
    /// </param>
    /// <param name='mn'>
    /// 承载回掉函数的实例是否存在的判断.
    /// </param>
    /// <param name='isUnique'>
    /// 是否是唯一的方法.
    /// </param>
    public static CallObj Add(DelayCall call, int delayframes, MonoBehaviour mn = null, bool isUnique = false)
    {
        if (!inited)
        {
            inited = true;
            UpdateManager.AddCoroutine(null, 0, OnUpdate);
        }
        if (isUnique)
        {
            for (int i = 0; i < calls.size; i++)
            {
                CallObj call2 = calls[i];
                if (call2.mn == mn && call2.call == call)
                {
                    return(call2);
                }
            }
        }

        var callobj = new CallObj();

        callobj.call  = call;
        callobj.isMN  = (mn != null);
        callobj.mn    = mn;
        callobj.frame = counter + delayframes;
        calls.Add(callobj);

        return(callobj);
        //calls.Add(Time.frameCount+delayframes,call);
        //calls[Time.frameCount+delayframes]+=call;
    }
Exemple #2
0
        public async Task <string> Call3Async(CallObj obj, string s1)
        {
            var s = $"[Call3Async]...{obj.P1}, {obj.P2}";

            Console.WriteLine(s);
            return(s);
        }
 /// <summary>
 /// 删除延迟执行.
 /// </summary>
 /// <param name='call'>
 /// Call.
 /// </param>
 public static void remove(CallObj call)
 {
     if (call != null)
     {
         calls.Remove(call);
     }
 }
Exemple #4
0
        private static CallObj getcall()
        {
            CallObj call = new CallObj();

            call.phoneNumber = "13650367330";
            return(call);
        }
    private static void OnUpdate(float delta)
    {
        ++counter;
        if (calls.size != 0)
        {
            for (int i = 0; i < calls.size; ++i)
            {
                CallObj call = calls[i];
                if (call.frame <= counter)
                {
                    calls.RemoveAt(i);
                    if (call.isMN && call.mn == null)//|| !call.mn.enabled))
                    {
                    }
                    else
                    {
                        try{
                            call.call();
                        }catch (Exception e) {
                            Debug.LogException(e);
                        }
                    }


                    --i;
                }
            }
        }

        //time call
        if (calltimes.size != 0)
        {
            for (int i = 0; i < calltimes.size; ++i)
            {
                CallTimeObj call = calltimes[i];
                if (call.time <= Time.realtimeSinceStartup)
                {
                    calltimes.RemoveAt(i);
                    if (call.isMN && call.mn == null)//|| !call.mn.enabled))
                    {
                    }
                    else
                    {
                        try{
                            call.call();
                        }catch (Exception e) {
                            Debug.LogException(e);
                        }
                    }


                    --i;
                }
            }
        }
    }
Exemple #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>

        static void Main(string[] args)
        {
            //MailObj mailg = getmail();
            //AlarmManager.mail.fillqueue(mailg,1);

            //SmsObj smsg=getsms();
            //AlarmManager.sms.fillqueue(smsg,1);

            CallObj callg = getcall();

            AlarmManager.call.fillqueue(callg, 1);
        }
Exemple #7
0
        public async Task <string> Call4Async(CallObj obj, Func <double, Task> cb, CancellationToken token)
        {
            string s = $"[Call4Async]...{obj.P1}, {obj.P2}";

            for (int i = 0; i < 50; i++)
            {
                await cb(i);

                await Task.Delay(100, token);
            }
            Console.WriteLine(s);
            return(s);
        }
Exemple #8
0
 public Task <string> Call3Async(CallObj obj, string s1, Func <double, Task> cb, CancellationToken token)
 {
     throw new NotImplementedException();
 }
Exemple #9
0
 public Task <string> Call3Async(CallObj obj)
 {
     throw new NotImplementedException();
 }