zoulei 1 year ago
parent
commit
af07f272c6
1 changed files with 41 additions and 23 deletions
  1. 41 23
      XdCxRhDW.WebApi/Controllers/DetectCgController.cs

+ 41 - 23
XdCxRhDW.WebApi/Controllers/DetectCgController.cs

@@ -19,7 +19,8 @@ namespace XdCxRhDW.WebApi.Controllers
     /// </summary>
     public class DetectCgController : BaseController
     {
-        private readonly TestService service;
+        private readonly string uploadFolder;
+        private readonly DetectService service;
 
         /// <summary>
         /// 
@@ -30,6 +31,8 @@ namespace XdCxRhDW.WebApi.Controllers
             this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot");
             this.service = service;
         }
+        private static readonly object thisLock = new object();
+        Dictionary<string, XcorrUtils> keyValues = new Dictionary<string, XcorrUtils>();
 
         private (bool, string) ValidateCalcParam(CalcDto dto)
         {
@@ -110,7 +113,10 @@ namespace XdCxRhDW.WebApi.Controllers
             try
             {
                 XcorrUtils xcorr = new XcorrUtils();
-                service.Add(token, xcorr);
+                lock (thisLock)
+                {
+                    keyValues.Add(token, xcorr);
+                }
                 var result = await xcorr.Calc(xItem);
                 //开始计算
                 if (result.flag == -2)
@@ -144,7 +150,10 @@ namespace XdCxRhDW.WebApi.Controllers
             }
             finally
             {
-                service.Remove(token);
+                lock (thisLock)
+                {
+                    keyValues.Remove(token);
+                }
                 try
                 {
                     //删除计算得文件
@@ -169,17 +178,18 @@ namespace XdCxRhDW.WebApi.Controllers
         //{
         //    return await Task.Run(() =>
         //    {
-        //        var xcorr = service.Get(token);
-        //        if (xcorr != null)
+        //        lock (thisLock)
         //        {
-        //            xcorr.StopCalc();
-        //            return Success(true);
+        //            if (keyValues.ContainsKey(token))
+        //            {
+        //                keyValues[token].StopCalc();
+        //                return Success(true);
+        //            }
+        //            else
+        //            {
+        //                return Success(false);
+        //            }
         //        }
-        //        else
-        //        {
-        //            return Success(false);
-        //        }
-
         //    });
 
         //}
@@ -229,7 +239,10 @@ namespace XdCxRhDW.WebApi.Controllers
             try
             {
                 XcorrUtils xcorr = new XcorrUtils();
-                service.Add(token, xcorr);
+                lock (thisLock)
+                {
+                    keyValues.Add(token, xcorr);
+                }
                 var dmcResult = await xcorr.DmcCheckAsync(dto.file1, dto.fsHz, dto.dmcType);
                 foreach (var dmcItem in dmcResult)
                 {
@@ -247,7 +260,10 @@ namespace XdCxRhDW.WebApi.Controllers
             }
             finally
             {
-                service.Remove(token);
+                lock (thisLock)
+                {
+                    //keyValues.Remove(token);
+                }
                 try
                 {
                     //删除检测的文件
@@ -272,20 +288,22 @@ namespace XdCxRhDW.WebApi.Controllers
         //{
         //    return await Task.Run(() =>
         //    {
-        //        var xcorr = service.Get(token);
-        //        if (xcorr != null)
+        //        lock (thisLock)
         //        {
-        //            xcorr.StopDm();
-        //            return Success(true);
-        //        }
-        //        else
-        //        {
-        //            return Success(false);
+        //            if (keyValues.ContainsKey(token))
+        //            {
+        //                keyValues[token].StopDm();
+        //                return Success(true);
+        //            }
+        //            else
+        //            {
+        //                return Success(false);
+        //            }
         //        }
         //    });
 
         //}
 
-       
+
     }
 }