【发布时间】:2019-12-22 11:38:28
【问题描述】:
我在数据库中有一些短信,我想在所有任务完成后更新它们的状态,
我不想在每次提交时使用task.Result 或await,因为它的工作速度非常慢。我需要将 sms Id 传递给客户并在响应时获取 Id。我使用 Inetlab。
有什么建议吗?
var messagesNumber = 30;
List<Task<SubmitSmResp[]>> tasks = new List<Task<SubmitSmResp[]>>();
for (int i = 0; i < messagesNumber; i++)
{
tasks.Add(client.SubmitAsync(
SMS.ForSubmit()
.AddUserDataHeader(new Inetlab.SMPP.Headers.UserDataHeader(1, new byte[2]))
.From("test")
.To("2323")
.Coding(DataCodings.UCS2)
.Text($"{i}test")));
}
await Task.WhenAll(tasks);
int k = 0; var thr = 0;
foreach (var t in tasks)
{
var res = (SubmitSmResp[])t.Result;
var ss = res.Select(x => x.Header.Sequence);
if (res.All(x => x.Header.Status == CommandStatus.ESME_ROK))
{
//want to update this sms in database,I need sms Id
}
if (res.All(x => x.Header.Status == CommandStatus.ESME_RTHROTTLED))
{
//want to update this sms in database,I need sms Id
thr++;
}
}
【问题讨论】:
-
请不要将代码作为图片发布
-
我通过代码改变了图像
标签: c# .net .net-core smpp inetlab.smpp