У меня есть метод, который отправляет 3 веб-запроса на устройство, которое заставляет его отправлять смс.2 первых запроса соответственно устанавливают получателя смс и тело сообщения.Третий запускает отправку.
Понятно, что этот метод должен быть синхронизирован, так как гоночные вызовы полностью испортят процесс конфигурации sms.
Конечно, это очень хорошо решается следующим образом:
private object _smsLock
private bool SendSmsSync(string recipientNumber, string body)
{
lock(_smsLock)
{
// 3 web requests are sent here
// false is returned if something goes wrong
return true;
}
}
Однако недостатком этого решения является то, что мы не имеем абсолютно никакого контроля над порядком, в котором будут выполняться одновременные вызовы.
Большой кусок кода, включая Queue, ManualResetEvents и потокимог конечно это сделать.Но я все еще хотел бы знать, знает ли кто-нибудь о более простом способе сделать это.
Обсудить:)