/// <summary> /// 将消息发送给所有用户 /// </summary> /// <param name="o"></param> private async void SendAllAsync(object o) { using (var scope = SherlockEngine.Current.CreateScope()) { ILoggerFactory loggerFactory = scope.ServiceProvider.GetService(typeof(ILoggerFactory)) as ILoggerFactory; var logger = loggerFactory.CreateLogger <AcceptMsgController>(); SendMsgDto dto = o as SendMsgDto; //获取App下所有的用户 IPushTokenBrandService pushTokenBrandService = scope.ServiceProvider.GetService(typeof(IPushTokenBrandService)) as IPushTokenBrandService; //IPushTokenBrandService pushTokenBrandService = SherlockEngine.Current.GetService<IPushTokenBrandService>();//这样写不会Dispose资源 var allTokenList = await pushTokenBrandService.GetAllTokenBrand(dto.AppId); if (allTokenList == null || allTokenList.Count == 0) { return; } IMapper mapper = scope.ServiceProvider.GetService(typeof(IMapper)) as IMapper; var req = mapper.Map <SendMsgListRequest>(dto); req.TokenList = allTokenList; string retMsg = string.Empty; try { //将消息拆解存到消息队列中 IMsgService msgService = scope.ServiceProvider.GetService(typeof(IMsgService)) as IMsgService; //IMsgService msgService = SherlockEngine.Current.GetService<IMsgService>(); var ret = msgService.AcceptAllMsgList(req, out retMsg); if (ret == ErrCode.Sucess) { logger.LogInformation("推送全体成功"); } else { logger.LogInformation("推送全体失败:" + retMsg); } } catch (Exception ex) { logger.LogInformation("推送全体失败:" + ex.Message.ToString()); } } }