我一直在开发xamarin
表单应用程序。该应用程序的主要目的是让用户创建一个倒数计时器,如果用户没有在计时器达到零之前停止计时器,它将向某些号码发送SMS消息。
我正在使用android前台服务启动计时器并显示倒数计时器。它工作正常,但是,此解决方案不是100%可靠的,因为如果由于某种原因在计时器启动后关机,则SMS将不会发送。因此,我想将计时器逻辑移至.Net Web API
(我的应用程序已经在使用.Net Web API
来实现其他功能),以便当用户启动计时器时,服务器上的Web API
会跟踪启动计时器的用户的计时器。
有人可以指导我针对上述情况为Web API实施可靠的解决方案吗?我看过Hangfire
和其他计划的任务,例如Windows服务,但是对于看似更简单的任务而言,它们似乎太复杂了。需要通过Web API
动态地启动和停止计时器,如果计时器达到零,则需要调用Web API
中的“ SendSMS”方法。
答案 0 :(得分:0)
您可以利用System.Threading.Tasks程序集的优势。像这样
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();
});
}
答案 1 :(得分:-1)
您可以使用this example或其他类似方式发送短信并在Web服务端实现倒数计时器。
然后,您使用HTTPClient
上的Xamarin
类来通知Web服务计时器需要启动或停止。
让我知道您是否需要代码示例。