この特定の質問を、解決できなかっ た次の質問の後に投稿します。
簡単に言うと、静的クラス(静的変数やプロパティを使用)を作成した場合でも、メインアプリとバックグラウンドエージェントは同じ静的クラスを使用しませんが、両方ともその新しいインスタンスを作成します。したがって、これらのプロジェクト間でデータを共有することは不可能です!!
それをテストするには:
- 新しいWindowsPhoneアプリケーション(AppTestと呼ばれる)を作成します
- ScheduledTaskプロジェクト(エージェントと呼ばれる)を追加します
- AppTestに、プロジェクトエージェントへの参照を配置します
- 新しいWindowsPhoneライブラリプロジェクト(Sharedと呼ばれる)を作成します
- AppTestとAgentの両方で、プロジェクトSharedへの参照を配置します
次に、この基本的なテストコードを使用します。
AppTest
private readonly string taskName = "mytest";
PeriodicTask periodicTask = null;
public MainPage()
{
    InitializeComponent();
    Vars.Apps.Add("pluto");
    Vars.Order = 5;
    StartAgent();
}
private void RemoveTask()
{
    try
    {
        ScheduledActionService.Remove(taskName);
    }
    catch (Exception)
    {
    }
}
private void StartAgent()
{
    periodicTask = ScheduledActionService.Find(taskName) as PeriodicTask;
    if (periodicTask != null)
        RemoveTask();
    periodicTask = new PeriodicTask(taskName)
    {
        Description = "test",
        ExpirationTime = DateTime.Now.AddDays(14)
    };
    try
    {
        ScheduledActionService.Add(periodicTask);
        ScheduledActionService.LaunchForTest(taskName, 
                TimeSpan.FromSeconds(10));
    }
    catch (InvalidOperationException exception)
    {
    }
    catch (SchedulerServiceException)
    {
    }
}
エージェント
protected override void OnInvoke(ScheduledTask task)
{
    if (Vars.Apps.Count > 0) 
        Vars.Order = 1;
    NotifyComplete();
}
共有
public static class Vars
{
    public static List<string> Apps = null;
    public static int Order;
    static Vars()
    {
        Apps = new List<string>();
        Order = -1;
    }
}
メインアプリをデバッグすると、静的クラスの静的コンストラクターが呼び出されることがわかります(これは正しいです)が、エージェントが呼び出されるVarsと「使用」されず、コンストラクターが別のときに呼び出されるため、別のインスタンスを作成します。
なんで?メインアプリとバックグラウンドエージェントの間でデータを共有するにはどうすればよいですか?
私はすでにVarsクラスをエージェントクラスと名前空間に入れようとしましたが、動作は同じです。