/// <summary> /// 加入等待轉換隊列 /// </summary> /// <param name="pAction"></param> public void AddQueue(MediaConverter pAction) { lock (this) { if (ActionQueue == null) { ActionQueue = new Queue <MediaConverter>(); } ActionQueue.Enqueue(pAction); //Console.WriteLine(string.Format("action隊列數量{0}", ActionQueue.Count)); } }
/// <summary> /// 上传視頻资源到微信服务器,并写入本地服务器配置文件 /// 由於視頻需要轉換,需要等待,會引起幷發,需要加入等待處理隊列 /// </summary> /// <param name="pRequest">請求</param> /// <param name="lcName">本地名稱</param> /// <param name="lcClassify">本地分類</param> /// <returns></returns> public List <WXVideoResultJson> UpdateResources(HttpRequestBase pRequest, string lcName, string lcClassify) { List <WXVideoResultJson> pResultList = new List <WXVideoResultJson>(); this.ExecuteTryCatch(() => { //創建視頻轉換事務委託及實體 DlgMediaResourceConvert pDlg = new DlgMediaResourceConvert(UpdateResourcesQueue); MediaConverter pMC = new MediaConverter() { Request = pRequest, lcName = lcName, lcClassify = lcClassify, Dlg = pDlg }; //加入等待隊列 MediaConverterQueue.singlelon.AddQueue(pMC); //執行轉換 pResultList = MediaConverterQueue.singlelon.ExecuteActions(); }); return(pResultList); }
/// <summary> /// 執行轉換,并返回最後一位成員結果 /// </summary> /// <returns></returns> public List <WXVideoResultJson> ExecuteActions() { List <WXVideoResultJson> pListOut = null; lock (this) { if (ActionQueue == null || ActionQueue.Count == 0) { return(pListOut); } int i = -1; while (i != 0) { MediaConverter mc = ActionQueue.Dequeue(); pListOut = mc.Dlg(mc.Request, mc.lcName, mc.lcClassify); i = ActionQueue.Count; } } return(pListOut); }