Мне нужно выполнить один метод несколько раз, как асинхронный в C # - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно выполнить один метод несколько раз как асинхронный в 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 голосов
/ 25 октября 2018

не говорите мне, что я передаю те же данные трижды.Все значения разные.

Но это не так, потому что sent - это поле, которое перезаписывается, и тогда все значения совпадают.

Сделайте sent локальным, созданным внутри метода.

...