2016-05-12 2 views
0

アプリが15分以内に開封されたかどうかを確認する必要があります。このためにバックグラウンドタスクを選択した場合、ウィンドウはタスクが強制終了されないことを保証するものではありません。システムタイムから独立したタイムスタンプを得る方法はありますか?アンドロイドのように、ここで簡単に使用できる起動から時間を得ることができます。 私は10アプリ(C#)を開発しています。アプリがフォアグラウンドにないときに、Windowsユニバーサルで正しい時間間隔を取得するにはどうすればよいですか?

+0

15分後に実行したいタスクはありますか? – Irfan

+0

フラグ(データベースに格納されている)が真であるかどうかをチェックしたいと思います。 – sant

+1

現在の時刻をアプリの設定に保存してから、再開/起動時に現在の時刻をチェックして保存された値と比較するのはなぜですか? – Romasz

答えて

0

私は、DispatcherTimerクラスを使用することをお勧めします。このクラスは、MSDNでよく説明されています。グローバル変数としてDateTimeOffset startTime;を作成します。その後、あなたは経過時間を確認するために、30秒ごとにTickイベントを作成します。

DateTimeOffset time = DateTimeOffset.Now; 
TimeSpan span = time - startTime; 

ティックイベントを作成するためのすべての詳細はよく私がDispatcherTimerのために提供されたリンクの上に記載されています。

+0

これは本当に使えますか?私のアプリはフォアグラウンドにないかもしれませんし、誰かが手動で変更できるので、現地時間を参考にしたくないです。 – sant

+0

私はアプリがフォアグラウンドではなくても動作することは確かですが、小さな間隔(30秒ではなく10秒、15ではなく1分)を使用してテストできます。また、現在の時刻が30秒前のイベントの時刻よりも小さいかどうかを確認するだけで、現地の時刻を変更したかどうかを検出できます。 – DomDev

+0

私はちょうど私のアプリでテストしました!ディスパッチャーのタイマーとイベントは、バックグラウンドでも機能します!あなたが言及した問題は、PC時間を変更することができ、それに応じてDispatcherTimerに影響を与えることになります。ただし、PCの分だけを変更することができます。そのため、15秒ごとに時刻を確認するイベントを実行すると、その人がその時間を騙したかどうかを簡単に検出できます。 – DomDev

0

TickCount私はこの問題を解決するために使用したものです。これにより、起動からの時間がミリ秒単位で表示されます。

関連する問題