0

これは非常に奇妙な問題であり、私が確認を求めたすべての人は、それが起こると言っていました.

15 分ごとに起動するThreading.Timerインスタンスがあります。そして、PhotoChooserビューを呼び出してそこから写真を選択すると、呼び出し元のページに戻るときに、アプリケーションがそのタイマーのコールバックを呼び出します! Threading名前空間のタイマーまたはディスパッチャータイマーのいずれかで、さまざまなタイマーを試しました。

アプリにいるときも同じことが起こり、デバイスの戻るボタンを押したままにして、リストからアプリを選択します。

私のアプリケーションは可能な限り単純です - コールバックと PhotoChooser を呼び出すメソッドを備えたタイマーです。誰でも解決策や回避策を手伝ってもらえますか?

アップデート:

私のコードの構成は次のとおりです。

private Timer _timer;

public void CallTimer()
{
    var period = 15 * 1000 * 60;
   _timer = new Timer(repeatTimer_Tick, null, 0, period);
}

private void repeatTimer_Tick(object state)
{
   // Some action here
}

private void Stop()
{
   if (_timer != null)
     _timer.Dispose();
}

private void CallPhotoChooser()
{
   // Some basic actions calling photochooser task
}
4

2 に答える 2

2

「 Windows Phone 7の廃棄」で説明されているように、ユーザーが [戻る] ボタンを押したままにするか、 のようなランチャーPhotoChooserTaskが呼び出されたときに、アプリケーションが廃棄される可能性が最も高くなります。これは、数秒以内にページに戻らない限り発生します。

何らかの方法でタイマーのタイムアウトをアプリケーションの状態に保存するか、初期タイムアウトを 15 分に設定してすぐに起動しないようにする必要があります。アプリケーションの状態を保存するには、リンクされている記事を参照NavigatedFromしてください。ページのコード ビハインドでオーバーロードできる場合は、これを行うことをお勧めします。

タイマーが作動するまでの残り時間は、もう少し難しいものです。タイマーを作成するときに(アプリケーションの状態に保存できる)時間を取得する必要があるタイムアウトの残り時間を知りDateTime.UtcNow、アプリケーションの再開時に次に起動する時間を計算すると思います。

于 2012-09-09T14:58:18.203 に答える
1

これらの長時間実行されるタイマーを作成するべきではありません :) アクティベーション/非アクティベーションを処理してタイマーをリセットし、フォト チューザーがアプリに戻ったときにタイマーを元に戻します。

于 2012-09-10T14:01:54.897 に答える