Фоновая задача таймера .net Web Api и форма Xamarin - PullRequest
0 голосов
/ 03 июля 2018

Я работал над приложением формы xamarin. Основная цель приложения - позволить пользователю создать таймер обратного отсчета, и если пользователь не останавливает таймер до того, как он достигнет нуля, он отправляет SMS-сообщения на некоторые номера.

Я использую службу переднего плана Android для запуска таймера и отображения таймера обратного отсчета. Он работает нормально, однако, это решение не на 100% надежно, так как SMS не будет отправлено, если по какой-то причине телефон выключился после того, как таймер посмотрел. Поэтому я хотел бы переместить логику таймера на .Net Web API (мое приложение уже использует .Net Web API для других функций), чтобы при запуске таймера пользователем Web API на сервере отслеживало таймер для пользователя, который запустил таймер.

Может ли кто-нибудь помочь мне реализовать надежное решение для веб-API для вышеуказанного сценария? Я рассмотрел Hangfire и другие запланированные задачи, такие как служба Windows, но они кажутся слишком сложными для этой, казалось бы, более простой задачи. Таймер должен запускаться и останавливаться динамически с помощью Web API, и если он достигает нуля, то должен вызываться метод "SendSMS" в Web API.

Ответы [ 2 ]

0 голосов
/ 14 июля 2018

Вы можете воспользоваться преимуществом System.Threading.Tasks Assembly. Как это

 CancellationTokenSource tokenSource;

        private void CancelSendMessageTask()
        {
            tokenSource?.Cancel();
        }

        private void StartTimer()
        {
            int SecondsToWait = 90;
            tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(SecondsToWait));

            Task.Delay(TimeSpan.FromSeconds(SecondsToWait), tokenSource.Token).ContinueWith((t) =>
            {
                if (t.IsCanceled) return;
                SendSMS();
            });
        }
0 голосов
/ 12 июля 2018

Вы можете использовать этот пример или другой аналогичный для отправки смс и реализации таймера обратного отсчета на стороне веб-службы.

затем вы используете класс HTTPClient на Xamarin, чтобы сообщить веб-службе о необходимости запуска или остановки таймера.

Дайте мне знать, если вам нужен пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...