public void StartTranslateUrl(DbOperator database, Alimama alimama, string adzoneName, int startTime, int endTime, int interval) { StopThread = false; _qunfaThread = new Thread(QunfaThreadProc); QunfaParam param = new QunfaParam(this, database, alimama, adzoneName, startTime, endTime, interval); _qunfaThread.Start(param); }
private void QunfaThreadProc(object param) { QunfaParam qunfaParam = param as QunfaParam; DateTime lastQunfaTime = new DateTime(); while (!qunfaParam.Qunfa.StopThread) { DateTime nowTime = DateTime.Now; TimeSpan delta = nowTime - lastQunfaTime; if (delta.TotalSeconds > qunfaParam.Interval * 60 && nowTime.Hour >= qunfaParam.StartTime && nowTime.Hour < qunfaParam.EndTime) { Debugger.Log(0, null, "开始群发 " + DateTime.Now.ToString()); while (!qunfaParam.Qunfa.StopThread) // 解析失败后重试 { bool bTranslatedSuccess = false; // 从数据库中加载商品 List <ProductInfo> productList = qunfaParam.Database.loadProductList(qunfaParam.Qunfa.QunfaStartRow, qunfaParam.Qunfa.QunfaCount, true); foreach (ProductInfo product in productList) { string url = product._auctionUrl; string decryptURL = EncryptDES.Decrypt(url); // 解密 if (qunfaParam.Qunfa.StopThread) { break; } string imgPath, qqShowContent, wechatShowContent; // 图片路径,文案 bool bSuccess = qunfaParam.Mama.TranslateURL(decryptURL, qunfaParam.AdzoneName, out imgPath, out qqShowContent, out wechatShowContent); // 转链 if (qunfaParam.Qunfa.StopThread) { break; } if (!bSuccess) // 转链失败 { Debugger.Log(0, null, decryptURL + " translate failed"); qunfaParam.Database.updateProductSendTime(product._id); // 更新商品的最新发送时间戳 break; } string strQQShowContent = ClipboardDataWrapper.WrapFroQQ(imgPath, qqShowContent); string strWechatShowContent = wechatShowContent; int nMajor = System.Environment.Version.Major; int nMinor = System.Environment.Version.Minor; if (nMajor >= 6 && nMinor >= 2) { // win8及以上 strWechatShowContent = ClipboardDataWrapper.WrapForWechat(imgPath, wechatShowContent); } TranslateUrlResult result = new TranslateUrlResult(product._title, strQQShowContent, strWechatShowContent, imgPath); lock (_translateListLock) { _translateList.Add(result); bTranslatedSuccess = true; qunfaParam.Database.updateProductSendTime(product._id); // 更新商品的最新发送时间戳 } } if (bTranslatedSuccess) // 如果有结果,则不再取,否则继续取 { break; } Thread.Sleep(1000); } lastQunfaTime = nowTime; } Thread.Sleep(1000); } }