我需要多次在C#中以异步方式执行一种方法

时间:2018-10-25 13:18:39

标签: c# .net async-await task-parallel-library

我需要使用wait运算符多次在c#中以异步方式执行一种方法。以下是我的代码

Task.Factory.StartNew(() => SentSMS(null, creation.SenderMobile, messageToSender));
Task.Factory.StartNew(() => SentSMS(null, creation.ReceiverMobile, messageToReciver));
Task.Factory.StartNew(() => SentSMS(null, empMobile, messageToEmp));
private async Task SentSMS(SMSReceived smsrecived, string mobilenumber ,string message)
{
    try
    {
        sent = new SMSSent();
        sent.MobileNumber = Util.ParseMobileNo(mobilenumber);
        sent.MobileOperator = Util.GetMobileOperator(mobilenumber);
        sent.QueryCodeId = 1;
        sent.ReplyByTelcoID = 1;
        sent.ReplyText = message;
        sent.ReplyByTelcoID = 1;
        sent.SMSReceivedId = (smsrecived == null ? 0 : smsrecived.ID);
        sent.SMSSentDate = DateTime.Now;
        sent.Status = 1;
        sentBL.Save(sent);
    }
    catch (Exception)
    {

    }
}

enter image description here 问题是,当最后一个请求启动时,它将覆盖其余2条记录。执行完此代码后,我已在数据库中检入了一次保存同一记录3次的记录。

不要告诉我我要传递三次相同的数据。所有值都不同。 我需要帮助。让我知道我是否缺少一些地方。我也尝试了Task.Run()。我不想使用await。在等待中,结果也相同

屏幕快照已附加数据库

1 个答案:

答案 0 :(得分:8)

  

不要告诉我我要传递三次相同的数据。所有值都不同。

但是它们不是,因为sent是一个字段,并且被覆盖,因此所有值都相同。

使sent成为在方法内部创建的本地语言。