public async Task DoWork()
        {
            // GetConsumingEnumerable在程序启动时会阻塞主线程,加上了这个delay就可以了
            await Task.Delay(1);

            foreach (var message in LoginLogQueue.blockingCollection.GetConsumingEnumerable())
            {
                // 有消息将数据写入数据库
                if (message != null)
                {
                    var detail = new LoginLogDetail
                    {
                        OperateAt       = message.OperateAt,
                        OperatorAccount = message.OperatorAccount,
                        IpAddress       = message.IpAddress,
                        IsSuccess       = message.IsSuccess,
                    };
                    await _loginLogDetail.AddAsync(detail);

                    await _systemIdentityDbUnitOfWork.SaveAsync();
                }
            }
        }
        public async Task Run()
        {
            int runCount = 0;

            while (!LoginLogQueue.Queue.IsEmpty && runCount++ < BatchLimitCount)
            {
                LoginLogQueue.Queue.TryDequeue(out LoginLogMessage message);

                // 有消息将数据写入数据库
                if (message != null)
                {
                    var detail = new LoginLogDetail
                    {
                        OperateAt       = message.OperateAt,
                        OperatorAccount = message.OperatorAccount,
                        IpAddress       = message.IpAddress,
                        IsSuccess       = message.IsSuccess,
                    };
                    await _loginLogDetail.AddAsync(detail);
                }
            }
            await _systemIdentityDbUnitOfWork.SaveAsync();
        }