在我的 Windows Phone Applicarion 中,我需要每 20 天实现一次启动某个方法的逻辑,我该如何实现呢?
public void Method()
{
//some logic
}
更新 例如我可以修复某些方法的第一次启动,然后每次启动应用程序我都会修复当前日期时间并计算差异,如果某些方法的最后一次和第一次启动之间的差异将超过 30 天我将启动 Method()。那么如何计算差异(天)?
在我的 Windows Phone Applicarion 中,我需要每 20 天实现一次启动某个方法的逻辑,我该如何实现呢?
public void Method()
{
//some logic
}
更新 例如我可以修复某些方法的第一次启动,然后每次启动应用程序我都会修复当前日期时间并计算差异,如果某些方法的最后一次和第一次启动之间的差异将超过 30 天我将启动 Method()。那么如何计算差异(天)?
不容易!
最适合此操作的是使用计划代理 - 但这大约每 30 分钟运行一次 - 因此您需要跟踪上次运行时间并采取相应措施。
另一个问题是,如果与计划任务关联的应用程序至少每 14 天都没有运行,则该任务将被禁用。
HTH,鲁珀特。
因此,您想知道距您上次在应用中执行操作是否已过去 20 天(或更多?)。
假设您将要计算的日期保存为DateTime
被调用的savedDate
. (我假设您可以毫无问题地将其放入并从 IsolatedStorage 中检索。)
然后您可以针对当前日期进行简单测试:
if (saveddate.Date.AddDays(20) <= DateTime.UtcNow.Date)
{
// Do your every 20 days action here
// and then probably reset savedDate to the current date?
}
推送通知怎么样。你让服务器来处理这个。当时间准备好时,它会向手机发送通知,手机会做相应的事情。
编辑:要找到差异,您可以执行以下操作
TimeSpan span = endTime.Subtract(startTime);
if(span.Days >= 20)
Method();
您可以将上次运行该方法的时间存储在隔离存储中,然后使用计划代理每 30 分钟运行一次:
if (DateTime.Now.Subtract(LastTimeRanFromIsolatedStorage) > TimeSpan.FromDays(20))
{
Method();
}