0

毎分更新されるライブ タイルにデータを表示する Windows 8 メトロ アプリがあります。

Metro アプリが開始されると、タイルの更新を行うためのシーケンスが作成されます。これは完全に機能します。

問題:

コンピューターを再起動すると、メトロ タイルが機能しなくなります。代わりに、デフォルトのメトロ タイル (アプリ名、左下、画像中央) に戻ります。

メトロアプリを起動して停止するだけで、再び機能するようになります。しかし、私はこれをしたくありません。

IBackgroundTask を実装し、run メソッドを実装するクラスを実装します。

public void Run(IBackgroundTaskInstance taskInstance){
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
    TileScheduler.CreateSchedule();
    deferral.Complete();
}

メトロ アプリ パッケージ マニフェストで、宣言 "Background Task" を追加し、エントリ ポイントの下にこのクラスを指定しました。タイマーとシステムイベントも登録します。

このクラス コードは基本的に、遅延でラップされていることを除いて、タイル シーケンスを初めて設定するときにメイン アプリが実行するのと同じコード パスを呼び出します。

質問 これは正しいパスですか (機能していないように見えるので、実装が間違っていると思います)? またはこれを行うためのより良い方法はありますか?

4

1 に答える 1

1

これは、「シミュレートされたプログラムではできない」というケースかもしれません。Visual Studio で開発者ライセンスを使用してアプリを実行することで、これを行っていると想定しています。タイルの更新がどのように機能するかについての私の理解(間違っている場合は修正してください)が、タイルはWebサイトをポーリングして、次のアイテムを表示します。ボックスをバウンスしたため、ASP.net ホストなどの Visual Studio スピンアップ サービスは実行されないため、タイルは新しい更新を取得できません。

ストアに展開する前に機能をテストする場合は、プロジェクトで Web サービスをテスト環境ではなく IIS に展開し、IIS を構成して起動時にそのサービスをホストすることをお勧めします。

于 2013-01-06T16:53:45.130 に答える