using System;
using System.Reactive.Linq;
using System.Windows;
using Microsoft.Phone.Scheduler;
using Microsoft.Phone.Shell;
namespace WindowsPhoneAgent7
{
public class ScheduledAgent : ScheduledTaskAgent
{
private static volatile bool _classInitialized;
///
/// ScheduledAgent constructor, initializes the UnhandledException handler
///
public ScheduledAgent()
{
if (!_classInitialized)
{
_classInitialized = true;
// Subscribe to the managed exception handler
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
Application.Current.UnhandledException += ScheduledAgent_UnhandledException;
});
}
}
/// Code to execute on Unhandled Exceptions
private void ScheduledAgent_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
///
/// Agent that runs a scheduled task
///
///
/// The invoked task
///
///
/// This method is called when a periodic or resource intensive task is invoked
///
protected override void OnInvoke(ScheduledTask task)
{
//TODO: Add code to perform your task in background
//
// Goal of the agent project is simply to test the "Marketplace Test Kit" passes.
// If Rx uses the following, it won't pass.
//
//PhoneApplicationService.Current.Activated += (o, e) => { };
Observable.Return("").Delay(TimeSpan.FromSeconds(1)).Subscribe(_ =>
{
NotifyComplete();
});
}
}
}