public void Init(int interval, bool dealInMain = true) { this.interval = interval; bTimer = new BTimer(); bTimer.SetLog((str, level) => { switch (level) { case BTimer.LogLevel.Info: Console.WriteLine("Info: " + str); break; case BTimer.LogLevel.Log: Console.WriteLine("Log: " + str); break; case BTimer.LogLevel.Warning: Console.WriteLine("Warning: " + str); break; case BTimer.LogLevel.Error: Console.WriteLine("Error: " + str); break; } }); // 设置主线程处理句柄,如果调用了该方法 // 则必须在主线程循环调用 DealTimeTask() 来在主线程处理计时任务回调 // 如果不调用该方法,则计时任务回调是在多线程中执行 if (dealInMain) { bTimer.SetHandle((cb, id) => { if (cb != null) { lock (obj) { taskPackQue.Enqueue(new TaskPack(id, cb)); } } }); } }