1

在我的 Windows Phone Applicarion 中,我需要每 20 天实现一次启动某个方法的逻辑,我该如何实现呢?

public void Method()
{
//some logic

}

更新 例如我可以修复某些方法的第一次启动,然后每次启动应用程序我都会修复当前日期时间并计算差异,如果某些方法的最后一次和第一次启动之间的差异将超过 30 天我将启动 Method()。那么如何计算差异(天)?

4

4 回答 4

3

不容易!

最适合此操作的是使用计划代理 - 但这大约每 30 分钟运行一次 - 因此您需要跟踪上次运行时间并采取相应措施。

另一个问题是,如果与计划任务关联的应用程序至少每 14 天都没有运行,则该任务将被禁用。

HTH,鲁珀特。

于 2012-06-12T08:29:53.463 回答
2

因此,您想知道距您上次在应用中执行操作是否已过去 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?
}
于 2012-06-12T09:00:56.660 回答
0

推送通知怎么样。你让服务器来处理这个。当时间准备好时,它会向手机发送通知,手机会做相应的事情。

编辑:要找到差异,您可以执行以下操作

TimeSpan span = endTime.Subtract(startTime);  
if(span.Days >= 20)
   Method();
于 2012-06-12T08:34:19.887 回答
0

您可以将上次运行该方法的时间存储在隔离存储中,然后使用计划代理每 30 分钟运行一次:

if (DateTime.Now.Subtract(LastTimeRanFromIsolatedStorage) > TimeSpan.FromDays(20))
{
   Method();
}
于 2012-06-12T09:02:03.687 回答