Exemple #1
0
        /// <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));
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }