private void AddIsStopDic(string taskId)
 {
     IsStopDic.AddOrUpdate(taskId, false, (key, vale) => {
         key  = taskId;
         vale = false;
         return(true);
     });
 }
        /// <summary>
        /// 手动抛出异常结束本次任务
        /// 完成资源清理
        /// </summary>
        public void ThrowException(string taskId, string msg)
        {
            bool isStop = false;

            if (IsStopDic.TryGetValue(taskId, out isStop))
            {
                if (isStop)
                {
                    //回收资源
                    Log.WriteLog("Manul stop Exception");
                    throw new Exception(msg);
                }
            }
        }
 public void ChangeValueIsStop(string taskId, HandEnum handEnum)
 {
     if (IsStopDic.ContainsKey(taskId))
     {
         try
         {
             Log.WriteLog("Change IsStop to true");
             IsStopDic[taskId] = true;
             //放开等待锁
             MemoryCache.Instence().Set(taskId, handEnum);
         }
         catch (Exception ex)
         {
         }
     }
 }
 /// <summary>
 /// 回收资源,必须在upload跟load方法finally中调用
 /// </summary>
 /// <param name="taskId"></param>
 public void RecycleResource(string taskId)
 {
     if (_lockDic.ContainsKey(taskId))
     {
         lock (_lockDic[taskId])
         {
             if (ReferenceCount.ContainsKey(taskId))
             {
                 ReferenceCount[taskId] -= 1;
                 if (ReferenceCount[taskId] == 0)
                 {
                     bool result = IsStopDic.TryRemove(taskId, out result);
                     if (!result)
                     {
                         Log.WriteLog("Recycel isStop failed");
                     }
                     MemoryCache.Instence().Recycle(taskId);
                     _lockDic.Remove(taskId);
                     ReferenceCount.Remove(taskId);
                 }
             }
         }
     }
 }