diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index db6cb1b7e..7003dc167 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -13,6 +13,8 @@ using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.MediatR.Handlers; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; +using System.Threading; +using Nito.AsyncEx; namespace IRaCIS.Core.Application.Service.ImageAndDoc { @@ -20,6 +22,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public class StudyService : BaseService, IStudyService { private static object lockCodeGenerate = new object(); + private readonly AsyncLock _mutex = new AsyncLock(); private readonly IEasyCachingProvider _provider; @@ -128,12 +131,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc studyMonitor.UploadFinishedTime = DateTime.Now; studyMonitor.ArchiveFinishedTime = DateTime.Now; studyMonitor.IsDicomReUpload = !incommand.IsAdd; + studyMonitor.IsSuccess = true; if (incommand.IsAdd) { var study = _mapper.Map(incommand.Study); - lock (lockCodeGenerate) + using (await _mutex.LockAsync()) { //查询数据库获取最大的Code 没有记录则为0 @@ -277,8 +281,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } - - await _dicomstudyRepository.SaveChangesAsync(); + using (await _mutex.LockAsync()) + { + await _dicomstudyRepository.SaveChangesAsync(); + + } return ResponseOutput.Ok(); }