我的数据库中有一些短信,我想在所有任务完成后更新它们的状态,我不想使用task.Result或等待每个提交,因为它工作非常缓慢。我需要将短信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++;
}
}
GUID
可以选择。您可以用作唯一标识符。