private void Update() { if (count > 0) { lock (_threadLock) { ThirdPartyParam param = thirdPartyParams.Dequeue(); --count; // Log.Info( // $"ThirdPartyUnityDispatch Dispatch param\nCommandType = {param.Type}\nJsonData = {param.JsonData}\nExtra = {param.ExtraData}\nHas callback = {param.Callback != null}\nThread id = {Thread.CurrentThread.ManagedThreadId}", // ColorName.Tan); if (param.Callback == null) { ThirdPartyDispatch.Handle(param.Type, string.IsNullOrEmpty(param.JsonData) ? null : JSONNode.Parse(param.JsonData), param.ExtraData); } else { param.Callback.Invoke((int)param.Type, string.IsNullOrEmpty(param.JsonData) ? null : JSONNode.Parse(param.JsonData), param.ExtraData); } } } }
public void Register(ThirdPartyParam InParam) { lock (_threadLock) { // Log.Info( // $"ThirdPartyUnityDispatch register param\nCommandType = {InParam.Type}\nJsonData = {InParam.JsonData}\nExtra = {InParam.ExtraData}\nHas callback = {InParam.Callback != null}\nThread id = {Thread.CurrentThread.ManagedThreadId}", // ColorName.Tan); thirdPartyParams.Enqueue(InParam); ++count; } }