.Net Framework 4.0 中foreach循环中使用异步
由于客户的电脑是xp系统,不支持 .Net 4.5 以上的框架,又有一个消息推送的功能需要实现,考虑到消息推送只是附加功能,不需要知道推送结果,所以用异步处理,能大幅度减少等待时间:
/// <param name="list">推送对象集合</param>
/// <param name="PushNum">推送个数</param>
/// <param name="token">Token值</param>
public static void SendMessage(List<TruckInfo> list, int PushNum, string token)
{
foreach (TruckInfo item in list)
{
Task tsk = new Task(() =>
{
if (Tools.Trim(item.WeChat) != "")
{
///参数名必须小写
postDataStr p = new postDataStr();
p.template_id = "vsRhIh2rqpIQ7Rcdp1qaLEU4EK_JHo8AB5yLyfNkK1E";
p.touser = item.WeChat;
p.token = token;
data d = new data();
first first = new first();
keyword1 keyword1 = new keyword1();
keyword1.value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
d.keyword1 = keyword1;
if (item.TruckCode == model.TruckCode)
{
first.value = "发单成功";
d.first = first;
keyword2 keyword2 = new keyword2();
keyword2.value = "请" + model.TruckCode + "号车到" + model.ProductLine + "装料!";
d.keyword2 = keyword2;
remark remark = new remark();
remark.value = model.Remark1;
d.remark = remark;
}
else
{
first.value = "通知";
d.first = first;
keyword2 keyword2 = new keyword2();
keyword2.value = "请" + item.TruckCode + "号车做好装料准备!";
d.keyword2 = keyword2;
remark remark = new remark();
remark.value = "";
d.remark = remark;
}
p.data = d;
string url = "https://sendmsg.xunruitec.com/Api/XRSend/SendTemplateMsg";
try
{
var jsonTest = JsonConvert.SerializeObject(p);//序列化传输的对象
HttpPost(url, jsonTest);
}
catch (Exception ex)
{
Tools.Log("消息发送", " SendMessage", ex.Message);
}
}
});
tsk.Start(); //启动Task,并把它安排到Task计划中
}
}

浙公网安备 33010602011771号